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










?????????????? 第五關(guān)();


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








?????



































??????? 路漫漫,繼續(xù)等待應(yīng)聘人吧。
??????? 在此也祝愿單身的朋友們?cè)缛照业饺缫獾牧硪话耄灰覔屩^(guò)光棍節(jié)!