zoukankan      html  css  js  c++  java
  • 设计模式2-模板方法模式

     1 namespace DesignModel.模板方法模式
     2 {
     3 
     4     abstract class Introduce
     5     {
     6         /// <summary>
     7         /// 模板方法,给出逻辑的骨架,是一些抽象行为组成,实现推迟到子类。
     8         /// </summary>
     9         public void SayHello()
    10         {
    11             Name();
    12             Department();
    13             Age();
    14         }
    15         /// <summary>
    16         /// 抽象行为1 放到子类去实现
    17         /// </summary>
    18         public abstract void Name();
    19         /// <summary>
    20         /// 抽象行为2
    21         /// </summary>
    22         public abstract void Department();
    23         /// <summary>
    24         /// 女员工可以选择隐藏自己的年龄,所以设定为虚方法吧
    25         /// </summary>
    26         internal protected virtual void Age()
    27         {
    28             Console.WriteLine("");
    29         }
    30     }
    31 
    32     /// <summary>
    33     /// 子类提供顶级逻辑的具体不同实现
    34     /// </summary>
    35     class XliuIntroduce : Introduce
    36     {
    37         public override void Department()
    38         {
    39             Console.WriteLine("挨踢部");
    40         }
    41 
    42         public override void Name()
    43         {
    44             Console.WriteLine("小牛");
    45         }
    46 
    47         internal protected override void Age()
    48         {
    49             Console.WriteLine("26");
    50         }
    51     }
    52     class RossIntroduce : Introduce
    53     {
    54         public override void Department()
    55         {
    56             Console.WriteLine("客户部");
    57         }
    58 
    59         public override void Name()
    60         {
    61             Console.WriteLine("Ross");
    62         }
    63     }
    64 }
    65 static void 模板方法模式()
    66         {
    67             Introduce introduce = new XliuIntroduce();
    68             introduce.SayHello();
    69             introduce = new RossIntroduce();
    70             introduce.SayHello();
    71         }
    View Code

    模板方法模式:抽象类定义顶级抽象逻辑,一个业务的“模板”,通过多态,子类去实现自己的业务算法。把不变行为搬移到超类,去除子类中的重复代码。当不变的和可变的行为在子类实现中出现就需要考虑使用该模式。

  • 相关阅读:
    P3740 [HAOI2014]贴海报 离散化+线段树
    离散化线段树
    manacher算法
    模板 ac自动机
    "美登杯" E、小花梨的数组* 线段树
    移动端测试
    移动端测试
    空气质量数据爬取-checkpoint.ipynb
    中国空气质量在线监测平台加密数据爬取
    移动端测试
  • 原文地址:https://www.cnblogs.com/liurui/p/5501986.html
Copyright © 2011-2022 走看看