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

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

  • 相关阅读:
    2. Add Two Numbers
    1. Two Sum
    22. Generate Parentheses (backTracking)
    21. Merge Two Sorted Lists
    20. Valid Parentheses (Stack)
    19. Remove Nth Node From End of List
    18. 4Sum (通用算法 nSum)
    17. Letter Combinations of a Phone Number (backtracking)
    LeetCode SQL: Combine Two Tables
    LeetCode SQL:Employees Earning More Than Their Managers
  • 原文地址:https://www.cnblogs.com/liurui/p/5501986.html
Copyright © 2011-2022 走看看