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();
    
            }
    
        }    
    
  • 相关阅读:
    快速排序和随机化快排学习
    P1330 封锁阳光大学 DFS
    P2577 [ZJOI2005]午餐 状压DP
    M. Subsequence 南昌邀请赛
    P1441 砝码称重 DFS回溯+DP
    P2661 信息传递 二分图的最小环
    P1196 [NOI2002]银河英雄传说 带权并查集
    P2024 [NOI2001]食物链 并查集
    F. Shovels Shop 背包DP
    P1514 引水入城 DFS
  • 原文地址:https://www.cnblogs.com/darrenji/p/3962039.html
Copyright © 2011-2022 走看看