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