C# 設計模式———模板方法模式

模板方法模式簡介

定義一個操作中的算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
在這裏插入圖片描述
一些方法通用,卻在每一個子類都重新寫了這一方法。關鍵代碼在抽象類實現,其他步驟在子類實現。

優點 缺點
封裝不變的部分,擴展可變部分 每一個不同的實現都需要一個子類來實現,導致類的個數增加,使得系統更加龐大
提取公共代碼,便於維護 /
行爲由父類控制子類實現 /

C#模板方法模式Demo

在這裏插入圖片描述

using System;

namespace TemplateMethodPattern
{
    class Program
    {
        static void Main(string[] args)
        {
            Exam zhangSan = new ZhangSan();
            zhangSan.Question();

            Exam liSi = new LiSi();
            liSi.Question();
        }
    }

    /// <summary>
    /// Exam基類    模板方法   封裝共有的方法Question()   擴展方法 Answer()
    /// </summary>
    public class Exam
    {
        public virtual string Name { get; set; }

        public virtual string Answer()
        {
            return string.Empty;
        }

        public void Question()
        {
            Console.WriteLine(string.Format("{0}回答問題——今天暖和嗎{1}", Name, Answer()) );
        }

    }

    public class ZhangSan : Exam
    {
        public ZhangSan()
        {
            this.Name = "張三";
        }

        public override string Answer()
        {
            return "A";
        }
    }

    public class LiSi : Exam
    {
        public LiSi()
        {
            this.Name = "李四";
        }

        public override string Answer()
        {
            return "B";
        }
    }
}

測試代碼:
在這裏插入圖片描述

參考資料

https://www.runoob.com/design-pattern/design-pattern-tutorial.html
更多:

23種設計模式C#

發佈了27 篇原創文章 · 獲贊 25 · 訪問量 3299
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章