用最简单的例子理解模板方法模式(Template Method Pattern)
2024-10-20 05:49:01
假设要做一道红烧肉,做法有很多,在不同的做法中都有相同的部分,比如都要放油、放肉、放调料等。也有不同之处,比如有些做法放可乐,有些做法放甜蜜酱,等等。
先提炼出一个抽象类,该类不仅有制作红烧肉的各个步骤,而且还把各个步骤归纳到另一个方法,我们把这个方法称作模版方法。另外,在模版方法中,对于一些不确定的方面先用抽象方法。
public abstract class HongShaoRou{public void MakeHongShaoRou(){You();Rou();Others();TiaoLiao();}public void You(){Console.WriteLine("放入油");}public void Rou(){Console.WriteLine("放入肉");}public abstract void Others();public void TiaoLiao(){Console.WriteLine("放入调料");}}
假如,有一种"四川红烧肉"是放芝麻酱的。
public class SiChuangHongShaoRou : HongShaoRou{public override void Others(){Console.WriteLine("放入芝麻酱");}}
客户端只要调用抽象类的模版方法就可以。
class Program{static void Main(string[] args){HongShaoRou hongShaoRou = new SiChuangHongShaoRou();hongShaoRou.MakeHongShaoRou();Console.ReadKey();}}
最新文章
- for循环嵌套的优化
- 深入理解PHP内核(八)变量及数据类型-预定义变量
- Android最佳实践之UI篇
- ASP.NET的简单与面向对象开发
- 插值和空间分析(一)_探索性数据分析(R语言)
- 2014年2月5日 Oracle ORACLE的工作机制[转]
- java实现二叉树的构建以及3种遍历方法
- Mybatis Sql片段的应用
- Python的__init__.py用法
- 分享我自己的一个最小化安装CentOS6的初始化脚本
- NOIP2017记
- android ------- 开发者的 RxJava 详解
- ping 127.0.0.1和ping本地ip分别测试什么?
- 笔记:使用mailto在网页中链接Email地址
- 一篇谈Flink不错的文章
- MUI(拍照+系统相册)图片上传剪切预览
- Py中的多维数组ndarray学习【转载】
- Android Volley源码分析及扩展
- nyoj 269 VF 动规
- 前端url传递编码问题
热门文章
- SQLSERVER 2008 编辑所有或者任意行
- 聚类:(K-means)算法
- KnockoutJs学习笔记(一)
- 黑马程序员_java基础笔记(06)...集合
- Linux-看完这篇Linux基本的操作就会了(转)
- tftp协议
- bootm命令移植
- codevs 1079 回家
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 lct 动态树 splay
- BZOJ.3991.[SDOI2015]寻宝游戏(思路 set)