class Program{static void Main(string[] args){//创建一个菠菜实例并调用模板方法Spinach spinach = new Spinach();spinach.CookVegetable();Thread.Sleep(5000);//创建一个白菜实例并调用模板方法ChineseCabbage chineseCabbage = new ChineseCabbage();chineseCabbage.CookVegetable();Console.Read();}}//炒菜类 炒菜有些步骤是一样的,比如 放油、放葱姜蒜、放菜(具体那种菜,根据实际需要添加)翻炒、盛菜。public abstract class Vegetable{// 模板方法,不要把模版方法定义为Virtual或abstract方法,避免被子类重写,防止更改流程的执行顺序public void CookVegetable(){Console.WriteLine("开始炒菜…………");this.PourOil();this.HeatOil();this.PutDressing();this.PourVegetable();this.stir_fry();this.OK();}public void PourOil(){Console.WriteLine("第一步:倒油");}public void HeatOil(){Console.WriteLine("把油烧热");}public void PutDressing(){Console.WriteLine("第二步:放调料");}//抽象放菜方法 可以后期根据具体炒的菜名进行重写public abstract void PourVegetable();// 开发翻炒蔬菜public void stir_fry(){Console.WriteLine("翻炒");}public void OK(){Console.WriteLine("菜炒好了,盛到盘子里");}}//具体炒的菜种类//菠菜public class Spinach : Vegetable{public override void PourVegetable(){Console.WriteLine("这道菜是菠菜,倒入菠菜");}}//大白菜public class ChineseCabbage : Vegetable{public override void PourVegetable(){Console.WriteLine("这道菜是白菜,倒入白菜");}}

View Code

此方法模式可以重复使用代码,把一个共性的过程作为一个模板,然后对这个模板进行细分,把一些个性的功能写成抽象方法,需要个性化的时候,只需要对抽象方法进行重写即可。

原文地址:http://www.cnblogs.com/zhili/p/TemplateMethodPattern.html

转载于:https://www.cnblogs.com/zyfadmin/p/8463840.html

C#设计模式--模板方法模式(学习Learning hard 设计模式笔记)相关推荐

  1. Java设计模式-模板方法模式详解

    Java设计模式-模板方法模式 文章目录 Java设计模式-模板方法模式 0.前言 1.模板方法原理 2.模板方法模式中的角色 3.模板方法模式的UML类图 4.代码实现 5.编码测试 6.模板模式中 ...

  2. 在一个程序设计里,不同的功能窗口有着相似的功能实现方式,可采用设计模式---模板方法模式

        前段时间学习了一些设计模式,最近在做项目的过程中恰巧用到了其中的一个--模板方法模式.这个模式在程序设计过程中可是为小编省去了不少的代码量呢.具体是怎样应用的呢?接下来小编为您分享. 前面博文 ...

  3. 『设计模式』瑞幸咖啡还是星巴克,一杯下午茶让我明白 设计模式--模板方法模式(Template Method Pattern)

    23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...

  4. 『设计模式』设计模式--模板方法模式

    23种设计模式+额外常用设计模式汇总 (持续更新) 简介 Define the skeleton of an algorithm in an operation,deferring some step ...

  5. 行为型设计模式---模板方法模式

    设计模式 序号 内容 链接地址 1 设计模式七大原则 https://blog.csdn.net/qq_39668819/article/details/115390615 2 创建型设计模式–工厂模 ...

  6. Java设计模式 - 模板方法模式

    Java设计模式 - 模板方法模式 定义一个算法的骨架,并将一些步骤通过子类表达. UML图示 要点 1. 定义一个算法的骨架 - 建立一个抽象类 2. 将一些步骤通过子类表达 - 子类继承抽象类 赋 ...

  7. linkin大话设计模式--模板方法模式

    linkin大话设计模式--模板方法模式 准备一个抽象类,将部分逻辑以具体方法的形式实现,然后申明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不 ...

  8. 金庸小说考试之模板方法模式学习笔记[C++版]

    /************************************************************************ * 模板方法模式学习笔记[C++] * Author ...

  9. Android设计模式--模板方法模式

    模板方法模式是一种很常见也很有用的设计模式,在android 架构中和一些开源框架中也是出现频率很高的. 如果你只想掌握一种设计模式,那强烈推荐模板方法模式. 那么什么是模板方法模式呢.我们先来看一下 ...

  10. Windows环境下实现设计模式——模板方法模式(JAVA版)

    我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows环境下如何编程实现模板方法模式(设计模式). 不知道大家有没有这样的感觉,看了一大堆编程和设计模式的书,却还是很难理解设计模式 ...

最新文章

  1. c#实现显式的用户自定义类型转换(关键字explicit operator)
  2. irc ubuntu_让我们聊聊写作:在IRC上加入我们
  3. 计算机专业教师演讲稿,计算机部教师会议发言稿范文
  4. 重磅 | 阿里云启动AliSQL邀测,性能比MySQL提升70%,秒杀场景提升百倍
  5. 【opencv学习笔记】SetImageROI函数设置ROI区域的作用及用法
  6. Linux的基本权限和特殊权限
  7. matlab空间直线拟合,使用matlab进行空间拟合
  8. 【韵律迁移】Robust and fine-grained prosody control of end-to-end speech synthesis
  9. 【ROS小车9】仅用 RPLIDAR A1(思岚 A1) 雷达在 Ubuntu 虚拟机跑 gmapping
  10. MySQL8.0无法启动3534的解决方法
  11. GO GOPROXY代理设置
  12. 数据结构_C语言_实验三_图 ——六度空间
  13. 2.5导入和混合配置 P61 Spring实战 第四版
  14. 测试测量 | 【一】如何实现生产过程中的自动化测试?——成功的自动测试系统的目标及面临的问题
  15. python聊天室_python聊天室
  16. mysql--学生表
  17. 如何自学Java 经典
  18. 新版mysql的下载教程_Mysql最新版8.0.21下载安装配置教程详解
  19. jupyter notebook 实用快捷键大全
  20. Java自定义连接池

热门文章

  1. 服务核心 - 工具类
  2. 看完后完全了解 Vue 2.0 和 Vue 3.0 的区别
  3. Java(发布/订阅模式)
  4. javascript --- [有趣的条件]双等号的隐式调用和数据劫持
  5. 某法院HP-P4500存储数据恢复案例
  6. 闪回表操作语法+使用闪回删除
  7. 算法之矩阵计算斐波那契数列
  8. mySQL 数据库错误
  9. 一位良心发现的交易员自述:我们是怎么玩弄散户的
  10. C++利用SOCKET传送文件