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#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值