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

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

  • 相关阅读:
    http协议介绍
    使用Bind提供域名解析服务
    .bash_profile和.bashrc的区别
    SNAT和DNAT
    9.Iptables与Firewalld防火墙
    ubuntu18.04.3新装系统安装QT5.14.1和环境配置
    【Navicat】如何激活成永久版本
    windows 安装配置mysql 8,以及远程连接访问
    fork子进程父进程死掉之后,getppid()不为1的解决办法
    ubuntu64运行32位程序安装过程
  • 原文地址:https://www.cnblogs.com/liurui/p/5501986.html
Copyright © 2011-2022 走看看