定義一個操做中的算法的骨架(穩定),而將一些步驟延遲(變化)到子類中。 Template Method 使得子類能夠不改變(複用)一個算法的結構便可重定義(override 重寫)該算法的某些特定步驟。 ——《設計模式》GoF
1. 在軟件構建過程當中,對於某一項任務,它經常有穩定的總體操做結構,但各個子步驟卻有不少改變的需求,或者因爲固有的緣由(好比框架與應用之間的關係)而沒法和任務的總體結構同時實現。 2. 如何在肯定穩定操做的前提下,靈活應對各個子步驟的變化或者晚期實現需求?
1. 一次性實現一個算法不變的部分,並將可變的部分留給子類來實現。 2. 各子類中公共的行爲應被提取出來並集中到一個公共父類中以免代碼重複。 1)首先識別現有代碼的不一樣之處,並將不一樣之處分離爲新的操做。 2)最後,用一個調用這些新操做的模板方法來替換這些不一樣的代碼。 3. 控制子類擴展。
1. Template Method 模式是一種很是基礎性的設計模式,在面向對象系統中有着大量的應用。它用最簡潔的機制(多態)爲不少應用程序框架提供了靈活的擴展點,是代碼複用方面基本的實現結構。 2. 除了能夠靈活應對子步驟的變化外,「不要調用我,讓我來調用你」的反向控制結構是 Template Method 的典型應用。 3. 在具體實現方面,被 Template Method 調用的抽象方法,能夠有實現,也能夠沒有任何實現(抽象方法),但通常推薦將它們設置爲 protected 方法。
模擬場景:我和女友的平常生活java