設計模式之-模板方法
阿新 • • 發佈:2018-06-14
設計 str 個人總結 行為 考題 更改 nbsp 題目 mage
轉自 大話設計模式:
模板方法模式主要采用故事: 很多人一起進行考試。都會提交不同的答案,而題目都是完全相同的,只有答案不相同為例。
part1: 考生A和B分別抄題目,然後進行回答
part2:通過觀察發現上述代碼中,題目都是相同的,如果更改一個題目,這2個類中也都會進行更改。part2把題目部分抽象出來。
A答題:
B答題:
測試:
part3:由part2裏面,我們可以發現,考生A和B都會有相同的行為,就是抄考題,寫答案,案例中發現其實最後就只有答案不同,其他的都是相同的。
在試卷類中增加虛方法,然後由A和B分別來繼承。只需要給出對應的答案就可以了
考生A:
考生B:
測試:
模板方法:定義一個操作中的算法骨架,而將一部分算法延續到子類去完成。子類可以在不改變算法結構的情況下重定義算法的某些特定步驟。
part4: 根據模板方法結構圖,可以看出
總結:
模板方法把不變的行為搬移到超類,去除掉子代碼中的重復代碼。模板方法模式提供了一個很好的代碼復用的平臺。
當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為會在子類中重復的出現。通過模板方法把這些行為搬移到單一的地方,這樣就幫助子類擺脫重復的不變的行為的羈絆。
個人總結:
當多個類都具有相同的行為,又擁有不同的行為時候,可以考慮把相同行為抽象出來。如果這些相同的行為都會去調用這些不同的行為,超類增加虛方法,子類去實現具體的不同的行為。
設計模式之-模板方法