假设要做一道红烧肉,做法有很多,在不同的做法中都有相同的部分,比如都要放油、放肉、放调料等。也有不同之处,比如有些做法放可乐,有些做法放甜蜜酱,等等。

先提炼出一个抽象类,该类不仅有制作红烧肉的各个步骤,而且还把各个步骤归纳到另一个方法,我们把这个方法称作模版方法。另外,在模版方法中,对于一些不确定的方面先用抽象方法。

    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();
        }
    }

最新文章

  1. for循环嵌套的优化
  2. 深入理解PHP内核(八)变量及数据类型-预定义变量
  3. Android最佳实践之UI篇
  4. ASP.NET的简单与面向对象开发
  5. 插值和空间分析(一)_探索性数据分析(R语言)
  6. 2014年2月5日 Oracle ORACLE的工作机制[转]
  7. java实现二叉树的构建以及3种遍历方法
  8. Mybatis Sql片段的应用
  9. Python的__init__.py用法
  10. 分享我自己的一个最小化安装CentOS6的初始化脚本
  11. NOIP2017记
  12. android ------- 开发者的 RxJava 详解
  13. ping 127.0.0.1和ping本地ip分别测试什么?
  14. 笔记:使用mailto在网页中链接Email地址
  15. 一篇谈Flink不错的文章
  16. MUI(拍照+系统相册)图片上传剪切预览
  17. Py中的多维数组ndarray学习【转载】
  18. Android Volley源码分析及扩展
  19. nyoj 269 VF 动规
  20. 前端url传递编码问题

热门文章

  1. SQLSERVER 2008 编辑所有或者任意行
  2. 聚类:(K-means)算法
  3. KnockoutJs学习笔记(一)
  4. 黑马程序员_java基础笔记(06)...集合
  5. Linux-看完这篇Linux基本的操作就会了(转)
  6. tftp协议
  7. bootm命令移植
  8. codevs 1079 回家
  9. BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 lct 动态树 splay
  10. BZOJ.3991.[SDOI2015]寻宝游戏(思路 set)