設計模式學習筆記-模板方法

來源:互聯網
上載者:User

概述:                                                                                                      

模板方法(TemplateMethod):定義一個操作中的演算法的骨架,而將一些步驟延遲到子類中。

TemplateMethod使得子類可以不改變一個演算法的結構即可以重定義該演算法的某些特定步驟。

實用性:                                                                                                    

1.一次性實現一個演算法的不變的部分,並將可變的行為留給子類來實現。

2.各子類中公用的行為應被提取出來並集中到一個公用類中以避免代碼重複。

   首先識別現有代碼的不同之處,並且將不同之處分離為新的操作。

   最後,用一個調用這些新的操作的模板方法來替換這些不同的代碼。

3.控制子類的擴充

類圖:                                                                                                      

結構展示代碼:                                                                                           

1.定義抽象父類

    abstract class AbstractClass
{
/// <summary>
/// 抽象行為,放到子類去實現
/// </summary>
public abstract void PrimitiveOperation1();
public abstract void PrimitiveOperation2();

/// <summary>
/// 模板方法,給出了邏輯的架構,但是裡面的抽象操作都需要子類去實現
/// </summary>
public void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
Console.WriteLine("");
}
}

2.定義實現演算法的子類

    class ConcreteClassA:AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("具體類A實現抽象父類的方法1");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("具體類A實現抽象父類的方法2");
}
}
class ConcreteClassB:AbstractClass
{
public override void PrimitiveOperation1()
{
Console.WriteLine("具體類B實現抽象父類的方法1");
}
public override void PrimitiveOperation2()
{
Console.WriteLine("具體類B實現抽象父類的方法2");
}
}

 3.用戶端調用

        /// <summary>
/// 測試模板方法
/// </summary>
static void TestTemplateMethod()
{
AbstractClass c;
c = new ConcreteClassA();
c.TemplateMethod();

c = new ConcreteClassB();
c.TemplateMethod();
Console.Read();
}

小結:                                                                                                      

模板方法就是最簡單的代碼複用和封裝,在很多系統類別庫中都有使用,讓你的系統的結構更加合理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.