????模板方法(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)抽象考察模板類