1. 程式人生 > >模板方法模式-TemplateMethod

模板方法模式-TemplateMethod

抽象類 size 混合 blog 子類 封裝性 不改變 就會 靈活性

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

  模板方法模式是通過吧不變形為搬移到超類,去除子類中的重復代碼來體現它的優勢。當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重復出現。通過模板方法模式把這些行為搬移到單一的地方,這樣就幫助子類擺脫重復的不變行為的糾纏。

模板方法模式結構圖:

技術分享

代碼實現:

技術分享

技術分享

技術分享

技術分享

模板方法模式的實現要素:準備一個抽象類,將部分邏輯以具體方法的形式實現,然後聲明一些抽象方法交由子類實現剩余邏輯,用鉤子方法給予子類更大的靈活性。最後將方法匯總成一個不可改變的模板方法。

  抽象超類:基本方法,抽象方法,鉤子方法(按需),模板方法(final)

  具體子類:實現超類中的抽象方法,覆蓋鉤子方法(按需)

模板方法模式的適用場景:

  算法或操作遵循相似的邏輯

  重構時(把相同的代碼抽取到超類中)

  重要、復雜的算法,核心算法設計為模板方法

模板方法模式的優缺點:

  優點:

    封裝性好

    復用性好

    屏蔽細節

    便於維護

  缺點:

    繼承(單繼承,難以繼承其他可能需要集成的類)

模板方法模式-TemplateMethod