【C#设计模式(23)——模板方法模式(Template Method Pattern)】

前言

复制代码
在抽象类中封装算法的结构,具体的实现步骤由子类定义,从而达到不改变算法结构的,允许子类重定义方法内容。

代码

csharp 复制代码
public abstract class Teamplate
{
    public void TeamplateMethod()
    {
        Step1();
        Step2();
        Step3();
    }
    protected abstract void Step1();
    protected abstract void Step2();
    protected abstract void Step3();
}
public class ConcreteTemplate : Teamplate
{
    protected override void Step1()
    {
        Console.WriteLine("Step1");
    }

    protected override void Step2()
    {
        Console.WriteLine("Step2");
    }

    protected override void Step3()
    {
        Console.WriteLine("Step3");
    }
}

 /*
  * 行为型模式:Behavioral Pattern
  * 模板方法模式:Template Method Pattern
  */
 internal class Program
 {
     static void Main(string[] args)
     {
         Teamplate teamplate = new ConcreteTemplate();
         teamplate.TeamplateMethod();
         Console.ReadLine();
     }
 }

运行结果

相关推荐
惊鸿醉1 小时前
Unity C# 中的 反射 小记
unity·c#·游戏引擎
极小狐1 小时前
如何使用极狐GitLab 软件包仓库功能托管 helm chart?
java·linux·服务器·数据库·c#·gitlab·maven
Yuze_Neko2 小时前
C#异步Task,await,async和Unity同步协程
开发语言·unity·c#
冰茶_2 小时前
WPF之集合绑定深入
microsoft·微软·c#·wpf·mvvm·数据绑定·布局系统
268572593 小时前
Java 23种设计模式 - 行为型模式11种
java·开发语言·设计模式
驾驭人生4 小时前
封装 RabbitMQ 消息代理交互的功能
c#
摘星编程5 小时前
并发设计模式实战系列(19):监视器(Monitor)
设计模式·并发编程
阿月浑子20216 小时前
[C#]Task.Run()和Task.Factory.StartNew()对比(腾讯元宝)
开发语言·c#
Eiceblue6 小时前
如何通过C# 获取Excel单元格的数据类型
开发语言·visualstudio·c#·excel
yangyang_z7 小时前
【C++设计模式之Strategy策略模式】
c++·设计模式·策略模式