設計模式之四:模板方法模式
(出處: 【泰斗社群】-專注網際網路遊戲和應用的開發者平台)
模板方法模式(template method pattern):
定義:define the skeleton of an algorithm in an operation,deferring some steps to subclasses . template method lets subclasses redefine certain
steps of an algorithm without changing the algorithm's structure.(定義乙個操作中的演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變演算法
的結構即可重定義該演算法的某些特定步驟)。
類圖:
優點:1、封裝不變部分,擴充套件可變部分;
2、提取公共部分**,便於維護
3、行為有父類控制,子類實現
缺點:每個不同的實現都需要定義乙個子類,這會導致類的個數增加,系統更加龐大,設計也更加抽象,但是更加符合「單一職責原則」,使得類的內聚性得以提高。
使用場景:
1、多個子類有公共的方法,並且邏輯基本相同
2、重要、複雜的演算法,可以把核心演算法設計模板方法,周邊的相關細節功能則有各個子類實現
實現
public abstract class abstractclass
}//具體模板a**
public class concreteclassa:abstractclass
//實現基本方法2
public override void primitiveoperation2()
}//具體模板b**
public class concreteclassb:abstractclass
//實現基本方法2
public override void primitiveoperation2()
}//場景類
public class client
}
設計模式(四)模板方法模式
先來想想第乙個問題,為什麼叫模板方法呢?答 模板模板,肯定就是有一套固定的模式,說白了就是套路,一樣的套路,似曾相識的感覺。同樣,如果我們在開發中,同樣的套路出現n多次,必然導致專案難以維護,就需要對設計產生嚴重懷疑,架構師要不明確說明為什麼相同的邏輯要出現兩次或更多次,要不然,嘿嘿,有你好看的!因...
模板設計模式 PHP設計模式之模板方法模式
模板方法模式,也是我們經常會在不經意間有會用到的模式之一。這個模式是對繼承的最好詮釋。當子類中有重複的動作時,將他們提取出來,放在父類中進行統一的處理,這就是模板方法模式的最簡單通俗的解釋。就像我們平時做專案,每次的專案流程實都差不多,都有調研 開發 測試 部署上線等流程。而具體到每個專案中,這些流...
設計模式之模板方法設計模式
父類抽象出子類共有的方法,子類實現各自不同的業務。總之就是一種行為有他們共同的方法,只是他們具體的實現不一樣。比如開車這種行為模式,啟動 換擋 踩油門。每種型號品牌的車都有共同的行為,但是不同型號品牌的車的實現方式可能不同,需要每個品牌型號的車自己實現這些功能。這樣的定義上面行為的模式,稱之為模板方...