1. 程式人生 > >設計模式——模板方法模式

設計模式——模板方法模式

調度 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() {

    }
}
  • 優點

    封裝部分不可變,擴招可變
    提取公共方法,利於維護
    行為父類控制,子類實現

設計模式——模板方法模式