• 设计模式(二) 模板方法


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

    优点: 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();
    客户端调用

    结果:

  • 相关阅读:
    metasploit 常用命令汇总
    MSF命令 收集
    【转载】虫师『性能测试』文章大汇总
    渗透测试、取证、安全和黑客的热门链接
    Hackers top in China
    国外整理的一套在线渗透测试资源合集[转载]
    Filezilla中文字符文件看不到或显示乱码的解决办法
    Filezilla 多目录的访问设置
    ISAPI在IIS7上的配置
    数据库主体在该数据库中拥有 架构,无法删除解决方法(转)
  • 原文地址:https://www.cnblogs.com/jasonbourne3/p/11096051.html
Copyright © 2020-2023  润新知