1. 程式人生 > >設計模式之-模板方法

設計模式之-模板方法

設計 str 個人總結 行為 考題 更改 nbsp 題目 mage

轉自 大話設計模式:

模板方法模式主要采用故事: 很多人一起進行考試。都會提交不同的答案,而題目都是完全相同的,只有答案不相同為例。

part1: 考生A和B分別抄題目,然後進行回答

技術分享圖片

技術分享圖片

技術分享圖片

part2:通過觀察發現上述代碼中,題目都是相同的,如果更改一個題目,這2個類中也都會進行更改。part2把題目部分抽象出來。

技術分享圖片

A答題:

技術分享圖片

B答題:

技術分享圖片

測試:

技術分享圖片

part3:由part2裏面,我們可以發現,考生A和B都會有相同的行為,就是抄考題,寫答案,案例中發現其實最後就只有答案不同,其他的都是相同的。

在試卷類中增加虛方法,然後由A和B分別來繼承。只需要給出對應的答案就可以了

技術分享圖片

考生A:

技術分享圖片

考生B:

技術分享圖片

測試:

技術分享圖片

模板方法:定義一個操作中的算法骨架,而將一部分算法延續到子類去完成。子類可以在不改變算法結構的情況下重定義算法的某些特定步驟。

技術分享圖片

part4: 根據模板方法結構圖,可以看出

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

總結:

模板方法把不變的行為搬移到超類,去除掉子代碼中的重復代碼。模板方法模式提供了一個很好的代碼復用的平臺。

當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為會在子類中重復的出現。通過模板方法把這些行為搬移到單一的地方,這樣就幫助子類擺脫重復的不變的行為的羈絆。

個人總結:

當多個類都具有相同的行為,又擁有不同的行為時候,可以考慮把相同行為抽象出來。如果這些相同的行為都會去調用這些不同的行為,超類增加虛方法,子類去實現具體的不同的行為。

設計模式之-模板方法