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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

大话设计模式—模板方法模式

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

在模板方法模式(TemplateMethod Pattern)中,一個抽象類公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但調用將以抽象類中定義的方式進行。這種類型的設計模式屬于行為型模式。

大話設計模式中程杰老師給出的定義是:模板方法模式:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟

有一個經常用到的實例就是Spirng 中對 Hibernate 的支持,將一些已經定好的方法封裝起來,比如開啟事務、獲取 Session、關閉 Session 等,我們不必重復寫那些已經規范好的代碼,直接給出一個實體就可以保存。

模板方法模式的結構圖如下:

代碼示例如下:

AbstractClass抽象類其實也就是一個抽象模板,定義并實現了一個模板方法。這個模板方法一般是一個具體的方法,它給出了一個頂級邏輯的骨架,而邏輯組成步驟在相應的抽象操作中,推遲到子類實現;頂級邏輯也有可能去調用一些具體方法。

//抽象類,實現了一些模板方法 public class abstract AbstractClass{//一些抽象行為,放到子類中其實現public abstract void PrimitiveOperation1();public abstract void PrimitiveOperation2();//模板方法,給出了邏輯的骨架,而邏輯的組成是一些相應的抽象操作,他們都推遲到子類中去實現public final void TemplatMethod(){initialize();PrimitiveOperation1();PrimitiveOperation2();}}

ConcreteClass類實現父類所定義的一個或者多個抽象方法。每一個AbstractClass都可以有任意多個ConcreteClass與之相對應,而每一個ConcreteClass都可以給出這些抽象方法的不同實現(也就是頂級邏輯組成步驟的不同實現),從而使得頂級邏輯的實現各不相同。

注意ConcreteClass類中方法的順序和模板類中方法的順序,具體的邏輯實現順序至于模板中定義的邏輯順序有關系。

//抽象類的某個實現類A public Class ConcreteClassA extends AbstractClass{@overridepublic void PrimitiveOperation2(){System.out.println("類A具體實現方法2");}@Overridepublic void initialize() {System.out.println("CocreteClassA Initialized");}@overridepublic void PrimitiveOperation1(){System.out.println("類A具體實現方法1");}} //抽象類的某個實現類B public Class ConcreteClassB extends AbstractClass{@overridepublic void PrimitiveOperation2(){System.out.println("類B具體實現方法2");}@Overridepublic void initialize() {System.out.println("CocreteClassB Initialized");}@overridepublic void PrimitiveOperation1(){System.out.println("類B具體實現方法1");}} //測試方法 public static void main(String[] args){AbstractClass ac;ac = new ConcreteClassA();ac.TemplatMethod();ac = new ConcreteClassB();ac.TemplatMethod();}

運行結果:

CocreteClassA Initialized 類A具體實現方法1A具體實現方法2CocreteClassB Initialized 類B具體實現方法1 類B具體實現方法2

模板方法模式的特點:

1、模板方法模式是通過把不變行為搬移到超類中,去除子類中的重復代碼來體現它的優勢;

2、模板方法模式就是提供了一個很好的代碼復用平臺;有時候我們會遇到一系列步驟構成的過程需要執行,這個過程從高層次上看是相同的,但是有些步驟的實現可能不同。

3、當不變的和可變的行為在方法子類實現中混合在一起的時候,不變的行為就會在子類中重復出現,我們通過模板方法模式把這些行為搬移到單一的地方,這樣就可以幫助子類擺脫重復的不變行為的糾纏。

優點:

1、封裝不變部分,擴展可變部分。

2、提取公共代碼,便于維護。

3、行為由父類控制,子類實現。

缺點:每一個不同的實現都需要一個子類來實現,導致類的個數增加,使得系統更加龐大。

使用場景:

1、有多個子類共有的方法,且邏輯相同。

2、重要的、復雜的方法,可以考慮作為模板方法。

注意事項:為防止惡意操作,一般模板方法都加上 final 關鍵詞。

總結

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

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