當要完成在某一細節層次一致的一個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,通常考慮用模板方法模式來處理。
模板方法模式:定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。
模板方法使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
abstract class AbstractClass{ //模板方法,給出了邏輯的骨架,而邏輯的組成是一些相應的抽象操作 public void TemplateMethod() { PRimitiveOperation1(); PrimitiveOperation2(); } //一些抽象行為,放到子類去實現 public abstract void PrimitiveOperation1(); public abstract void PrimitiveOperation2();}class ConcreteClassA : AbstractClass{ public override void PrimitiveOperation1() { 具體實現;} public override void PrimitiveOperation2() { 具體實現;}}class ConcreteClassB : AbstractClass{ public override void PrimitiveOperation1() { 具體實現;} public override void PrimitiveOperation2() { 具體實現;}}main(){ AbstractClass c; c = new ConcreteClassA(); c.TemplateMethod(); c = new ConcreteClassB(); c.TemplateMethod();}模板方法模式通過把不變的行為移動到超類,去除子類中的重復代碼來體現其優勢。
模板方法模式提供了一個很好的代碼復用平臺。
當不變的和可變的行為在方法的子類實現中混合在一起的時候,不變的行為就會在子類中重復出現。
通過模板方法模式把這些行為搬移到單一的地方,這樣就幫助子類擺脫重復的不變行為的糾纏。
新聞熱點
疑難解答