????模板方法(Template Method)模式 屬于對象的行為模式。
1. 定義
??? 定義一個操作中算法的骨架,將一些步驟執行延遲到其子類中。模板方法模式是基于繼承的代碼復用的基本技術,該模式的結構和用法也是面向對象設計的核心。
2. 使用的原因
??? 當一個算法的基本骨架已能確定,但算法的實現部分會根據具體情況有所變動,或為了提高算法實現的靈活性時,可考慮采用模板方法(Template Method)模式。
3. 適用的情況舉例
??? eg. 你計劃了向所喜歡的女孩子表白,你已經想好了當晚表白時要進行的具體步驟,例如第一步打電話約該女生出來,第二步與該女生去一家咖啡廳或附近的某公園表白,第三步.......,但還沒想好具體的某些步該怎么樣做時,你可以先定義一個抽象的模板,然后請各好友或自己閉關想出一種或多種來實現之;
4. 類圖結構及說明
???? 1)類圖結構如下所示:
?????? 2)類說明
??????????? i) AbstractClass:抽象模板類,該類定義了一個或多個抽象操作,以便讓子類實現;并且它給出了一個頂級邏輯的骨架,而邏輯的組成步驟在相應的抽象步驟中,推遲到子類實現。
?????????? ii)ConcreteClass:具體模板類,該類實現父類AbstractClass所定義的一個或多個抽象方法,它們是一個頂級邏輯的組成步驟;每一個抽象模板角色都可以有任意多個具體模板角色與之對應,而每一個具體模板角色都可以給出這些抽象方法的不同實現。
5. 使用舉例
1) 需求:Amigo的老媽大人打算找個女婿,特意為其未來女婿定義需闖的五關,第一關:基本條件,年齡要求:25-30;第二關:考驗其是否love她的女兒;第三關:檢驗其是否老實不花心;第四關:考察其是否尊老愛幼;第五關:觀察該人是否勤奮好學有能力。對于來“應聘”的人(也許還有不少,貌似美美地說),對這五關都會有不同的表現方式;
???? 2)分析:Amigo一瞄,嘿,這倒是個模板方法方式的典型好例哦,選女婿的算法骨架已出來了,就是這五關哈,各個“應聘”者提供了第二到五關的具體實現;
???? 3)代碼參考實現:
????????? i)抽象考察模板類










?????????????? 第五關();


????????????
???????? public final void 第一關() {
???????????????//年齡限制:25-30
?????????}








?????



































??????? 路漫漫,繼續等待應聘人吧。
??????? 在此也祝愿單身的朋友們早日找到如意的另一半,不要跟我搶著過光棍節!