zoukankan      html  css  js  c++  java
  • 用最简单的例子理解模板方法模式(Template Method Pattern)

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

     

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

        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();
    
            }
    
        }    
    
  • 相关阅读:
    Spring注解@Component、@Repository、@Service、@Controller区别
    多线程基本知识
    分布式与集群的区别
    Top 10 Uses For A Message Queue
    redis 总结
    redis 学习
    线程控制-延时与守护
    kafka 教程(一)-初识kafka
    Kafka 教程(二)-安装与基础操作
    ZooKeeper-安装
  • 原文地址:https://www.cnblogs.com/darrenji/p/3962039.html
Copyright © 2011-2022 走看看