個人學習筆記,不具備參考價值
模板方法:定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法模式使得子類不改變演算法的結構即可重新定義該演算法的某些步驟。
說白點就是:abstractclass類實現了乙個演算法,對應的是方法methoda,方法methoda中呼叫了抽象方法step1()、setp()2來完成這個演算法。abstractclass有多個子類,每個子類對方法step1()、step2()的實現是不同的,從而使每個子類的methoda()方法實現都不同,這樣就達到了子類不改變演算法的結構即可重新定義該演算法的某些步驟。我們可以稱為methoda()為模板方法。
模板方法就是把不變的搬移到超類,去除子類中的重複**來體現它的優勢。
使用場合
當不可變的和可變的行為在方法的子類中混合在一起的時候,不變得行為就會重複的出現在每個子類裡。這時,我們通過模板方法將可變的搬移到父類,這樣就幫助了子類擺脫了重複不變的行為。比如說有乙個業務,這個業務對應的實現方法是methoda(),方法中有個step1、step2、step3邏輯,step1是每個子類都相同的,step2和step3每個子類都有各自的實現,這種情況我們就可以使用模板方法模式了。
ps:其實感覺這個模板方法模式本身並不困難,很容易理解。關鍵是我們在寫程式時要知道我們程式中什麼地方或什麼邏輯是可變的,是不可變的,這個要抽象的好,就事半功倍了。
模板方法模式 考題抄錯會做也白搭
模板方法 當我們要完成在某一細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,我們通常考慮用模板方法模式來處理。模板方法模式 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。模板方法模...
考題抄錯會做也白搭 模板方法模式
10.1 考題不會做,蒙唄!10.2 重複 易做 難改 namespace 模板方法模式 學生甲抄的試卷 class test a 試題2 public void testquestion2 試題3 public void testquestion3 學生乙抄的試卷 class test b 試題2...
大話設計模式十 模板方法模式(考題抄錯會做也白搭)
模板方法模式,定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。模版方法模式是通過把不變行為搬移到超類,取出子類中的重複 來體現它的優勢。abstractclass是抽象類,其實也就是一抽象模板,定義並實現了乙個模板方...