類行為型模式之模板方法模式 重要等級3難度等級2

2021-08-17 00:06:54 字數 1722 閱讀 4668

適用環境:一次性實現乙個演算法的不變部分,並將可變行為留給子類來實現。各子類中公共的行為應被提取出來並集中到乙個公共父類中以避免**重複。控制子類的拓展。對一些複雜的演算法進行分割,將其演算法中固定不變的部分設計為模板方法和父類具體方法,而一些可以改變的細節由其子類來實現。

實際應用:模板方法模式廣泛應用於框架設計(如spring、struts等)中,以確保父類控制處理流程的邏輯順序。

其結構中只存在父類和子類之間的繼承關係。模板方法模式是最簡單的行為型模式,在其抽象類中定義了乙個稱為模板方法的方法,在這個方法中定義了其他基本方法的執行步驟,而基本方法的實現可以放在抽象類中,也可以放在其子類中。模板方法模式是基於繼承的**復用基本技術,模板方法模式的結構和用法也是物件導向設計的核心之一。

定義:定義乙個操作中演算法的骨架,而將一些不走延遲到子類中,模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

模式結構圖:

鉤子方法:乙個鉤子方法由乙個抽象類或具體類宣告並實現而其子類可能會加以拓展。通常在父類中給出的實現是乙個空實現,並以該空實現作為方法的預設實現,當然鉤子方法也可以提供乙個非空分預設實現。在模板方法模式中,鉤子方法有兩類:第一類鉤子方法可以與一些具體操作」掛鉤「,以確定在不同條件下執行模板方法中不同的不走,這類鉤子方法的返回型別通常是boolean型別,這類方法名一般為is***(),用於對某個條件進行判斷,如果條件滿足則執行某一步驟,否則某一步驟不執行。還有一類鉤子方法就是實現體為空的具體方法,子類可以根據需要覆蓋或者繼承這些鉤子方法,與抽象方法相比,鉤子方法的好處在於如果沒有覆蓋父類中定義的鉤子方法,編譯可以通過,但是如果沒有覆蓋父類中定義的抽象方法,bian'y將報錯。

**:客戶端:

package com.templatemethodpattern.hing;

public class client

}

抽象類:

package com.templatemethodpattern.hing;

public abstract class banktemplatemethod

public abstract void transact() ;

public void evaluate()

public void process()

}

具體子類:

package com.templatemethodpattern.hing;

public class deposit extends banktemplatemethod

}

package com.templatemethodpattern.hing;

public class withdraw extends banktemplatemethod

}

package com.templatemethodpattern.hing;

public class transfer extends banktemplatemethod

}

總結:模板方法模式在針對一些都有同樣的一些步驟的一些情況下使用起來可以大幅減少**量,將**的復用技術體現得淋漓盡致。

模板方法 類行為型模式

一 意圖 定義乙個操作中的演算法骨架,而將一些步驟延遲到子類中。templatemethod使得子類可以不改變乙個演算法的結構即可定義該演算法的某些特定步驟。二 適用性 三 結構 四 public abstract class car protected abstract void lighter ...

行為型模式 模板方法

結構圖 模式說明 1.擴充套件點在抽象類abstractclass的實現子類。2.每乙個實現子類實現一種抽象方法的演算法實現,子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。3.客戶端可以替換不同的子類實現。4.定義乙個操作的演算法骨架,而將一些步驟延遲到子類中實現,模板方法使得子類...

行為型模式 模板方法

定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。模板方法 template method 是乙個比較簡單的模式。它的主要思想是,定義乙個操作的一系列步驟,對於某些暫時確定不下來的步驟,就留給子類去實現好了,這樣不同的子類就可...