日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式:模板方法模式(Template Method)

發布時間:2024/4/11 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式:模板方法模式(Template Method) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歡迎支持筆者新作:《深入理解Kafka:核心設計與實踐原理》和《RabbitMQ實戰指南》,同時歡迎關注筆者的微信公眾號:朱小廝的博客。


歡迎跳轉到本文的原文鏈接:https://honeypps.com/design_pattern/template-method/

?模板方法模式:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。TemplateMethod使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。一次性的實現一個算法的不變部分,并將可變的行為留給子類來實現。

?模板方法的關鍵是:子類可以置換掉父類的可變部分,但是子類卻不可以改變模板方法所代表的頂級邏輯。
?模板方法模式中的方法可以分為兩大類:模板方法基本方法

1 模板方法
?一個模板方法是定義在抽象類中的,把基本操作方法組合在一起形成一個總算法或一個總行為的方法。
?一個抽象類可以有任意多個模板方法,而不限于一個。每一個模板方法都可以調用任意多個具體方法。

2 基本方法
?基本方法又可以分為三種:抽象方法(Abstract Method)、具體方法(Concrete Method)和鉤子方法(Hook Method)。
?抽象方法:一個抽象方法由抽象類聲明,由具體子類實現。
?具體方法:一個具體方法由抽象類聲明并實現,而子類并不實現或置換。
?鉤子方法:一個鉤子方法由抽象類聲明并實現,而子類會加以擴展。通常抽象類給出的實現是一個空實現,作為方法的默認實現。這種空的鉤子方法叫做“Do Nothing Hook"。鉤子方法的名字應當以do開始,這是熟悉設計模式的Java開發人員的標準做法。譬如HttpServlet類中,也遵從這一命名規則:doGet, doPost等。 在HttpServlet中模板方法由service()方法擔任,基本方法由doPost(),doGet()等方法擔任。

案例
1 AbstractClass

public abstract class AbstractTemplate {public void templateMethod(){abstractMethod();doHookMethod();concreteMethod();}protected abstract void abstractMethod();protected void doHookMethod(){}protected final void concreteMethod(){System.out.println("invoke concreteMethod");}; }

2 ConcreteClass

public class ConcreteTemplate extends AbstractTemplate {@Overrideprotected void abstractMethod(){System.out.println("ConcreteTemplate-abstractMethod");}@Overridepublic void doHookMethod(){System.out.println("ConcreteTemplate-doHookMethod");} }

參考資料

  • 23種設計模式
  • 《JAVA與模式》之模板方法模式
  • 歡迎跳轉到本文的原文鏈接:https://honeypps.com/design_pattern/template-method/

    歡迎支持筆者新作:《深入理解Kafka:核心設計與實踐原理》和《RabbitMQ實戰指南》,同時歡迎關注筆者的微信公眾號:朱小廝的博客。


    總結

    以上是生活随笔為你收集整理的设计模式:模板方法模式(Template Method)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。