zoukankan      html  css  js  c++  java
  • 设计模式(二) 模板方法

    模板方法模式——在一个抽象类中定义一个操作中的算法骨架,而将一些步骤延迟到子类中去实现(对应于我们根据自己的情况向模板填充内容)。模板方法使得子类可以不改变一个算法的结构前提下,重新定义算法的某些特定步骤,模板方法模式把不变行为搬到超类中,从而去除了子类中的重复代码。

    优点: 1、封装不变部分,扩展可变部分。 2、提取公共代码,便于维护。 3、行为由父类控制,子类实现。

     1  /// <summary>
     2  /// 炒菜基类
     3  /// </summary>
     4 public abstract class CookAbstract
     5 {
     6         /// <summary>
     7         /// 模板方法
     8         /// </summary>
     9         public void Cook()
    10         {
    11             AddOil();
    12             AddVegetables();
    13             AddSalt();
    14         }
    15 
    16         /// <summary>
    17         /// 加油
    18         /// </summary>
    19         public virtual void AddOil()
    20         {
    21             Console.WriteLine("加油");
    22         }
    23         /// <summary>
    24         /// 加蔬菜
    25         /// </summary>
    26         public abstract void AddVegetables();
    27         /// <summary>
    28         /// 加盐
    29         /// </summary>
    30         public virtual void AddSalt()
    31         {
    32             Console.WriteLine("加盐");
    33         }
    34 }
    炒菜基类
     1  /// <summary>
     2  /// 炒土豆
     3  /// </summary>
     4 public class CookPotato : CookAbstract
     5 {
     6         public override void AddVegetables()
     7         {
     8             Console.WriteLine("加土豆");
     9         }
    10 }
    11  /// <summary>
    12  /// 炒白菜
    13  /// </summary>
    14 public class CookCabbage : CookAbstract
    15 {
    16         public override void AddOil()
    17         {
    18             Console.WriteLine("加花生油");
    19         }
    20         public override void AddVegetables()
    21         {
    22             Console.WriteLine("加白菜");
    23         }
    24 }
    炒菜子类
    1  CookAbstract potato = new CookPotato();
    2  CookAbstract cabbage = new CookCabbage();
    3 
    4   potato.Cook();
    5   Console.WriteLine();
    6   cabbage.Cook();
    客户端调用

    结果:

  • 相关阅读:
    iptables的例子1
    Nginx教程
    bash编程基础
    centos7 PXE自动安装环境搭建
    矛盾破裂了
    20200823-矩阵的收尾与离散控制的跌跌撞撞
    20200817-三大公式的结束-频域法的再探
    markdown换行
    由二〇二〇新冠疫情引发的对于开源、分享这一理念的看法
    Windows简单使用记录
  • 原文地址:https://www.cnblogs.com/jasonbourne3/p/11096051.html
Copyright © 2011-2022 走看看