設計模式——模板方法模式
阿新 • • 發佈:2018-03-31
調度 pos 開發 switch 需要 邏輯 重新定義 log lighting
模板方法定義
定義一個模板,在父類中抽象部分方法,實現部分方法。將部分方法放在子類來實現,使得子類不改變結構即可重新定義某些特定步驟。
方法角色
(1)基本方法
基本方法,由子類自己去實現
(2)模板方法
具體方法,實現對基本方法的調度,完成固定邏輯。模板方法的使用場景
我們在日常開發中可能會遇到類似情況,某個方法實現需要一系列步驟。
例如:我們要造一把機械鍵盤,需要制作的東西有鍵帽,鍵軸,背光類型。
(1)抽象基類(鍵帽,鍵軸,背光類型等制作由子類去控制)
(2)制作鍵盤的過程固定下來由抽象基類去實現
UML類圖
package Template; /** * Created by jianw.li on 2017/12/11. */ public abstract class AbstractKeyboard { /** * 制作鍵帽 */ protected abstract void makeKeyCap(); /** * 制作鍵軸 */ protected abstract void makeKeySwitches(); /** * 制作鍵盤燈 */ protected abstract void makeLighting(); /** * 不允許改變父類方法 */ final public void makeKeyboard() { /** * 調用制造鍵盤基本方法 */ this.makeKeyCap(); this.makeKeySwitches(); this.makeLighting(); } }
public class KeyboardI extends AbstractKeyboard {
protected void makeKeyCap() {
}
protected void makeKeySwitches() {
}
protected void makeLighting() {
}
}
public class KeyboardII extends AbstractKeyboard { protected void makeKeyCap() { } protected void makeKeySwitches() { } protected void makeLighting() { } }
public class KeyboardIII extends AbstractKeyboard{
protected void makeKeyCap() {
}
protected void makeKeySwitches() {
}
protected void makeLighting() {
}
}
優點
封裝部分不可變,擴招可變
提取公共方法,利於維護
行為父類控制,子類實現
設計模式——模板方法模式