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

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

    抽象模板角色(Vegetable扮演这个角色):定义了一个或多个抽象操作,以便让子类实现,这些抽象操作称为基本操作。
    具体模板角色(ChineseCabbage和Spinach扮演这个角色):实现父类所定义的一个或多个抽象方法。

    员工上班遵循前往上班目的地,上班打卡,然后执行自己的工作,最后下班打卡的这样一个流程。

     1 /// <summary>  
     2     /// 抽象上班模板  
     3     /// </summary>  
     4     public abstract class working  
     5     {  
     6         // 模板方法,不要把模版方法定义为Virtual或abstract方法,避免被子类重写,防止更改流程的执行顺序  
     7         public void Init(string name)  
     8         {  
     9             this.gotocompany(name);  
    10             this.clockin(name);  
    11             this.workings(name);  
    12             this.offduty(name);  
    13         }  
    14   
    15         /// <summary>  
    16         /// 去公司  
    17         /// </summary>  
    18         public abstract void gotocompany(string name);  
    19   
    20         /// <summary>  
    21         /// 打卡  
    22         /// </summary>  
    23         private void clockin(string name)  
    24         {  
    25             Console.WriteLine("员工:" + name + "上班打卡");  
    26         }  
    27   
    28         /// <summary>  
    29         /// 开展自己的工作  
    30         /// </summary>  
    31         /// <param name="name"></param>  
    32         public abstract void workings(string name);  
    33   
    34         /// <summary>  
    35         /// 下班打卡  
    36         /// </summary>  
    37         /// <param name="name"></param>  
    38         private void offduty(string name)  
    39         {  
    40             Console.WriteLine("员工:" + name + "下班班打卡");  
    41         }  
    42     }  
     1 /// <summary>  
     2    /// 员工A  
     3    /// </summary>  
     4    public class employeeA:working  
     5    {  
     6        public override void gotocompany(string name)  
     7        {  
     8            Console.WriteLine(name+"员工做地图前往公司");  
     9        }  
    10   
    11        public override void workings(string name)  
    12        {  
    13            Console.WriteLine(name+"员工开展程序编码工作");  
    14        }  
    15    }  
     1 /// <summary>  
     2 /// C#设计模式-模板方法模式  
     3 /// </summary>  
     4 class Program  
     5 {  
     6     static void Main(string[] args)  
     7     {  
     8         working w = new employeeA();  
     9         w.Init("A");  
    10     }  
    11 }  

    学习于   https://blog.csdn.net/heyangyi_19940703/article/details/51313934

  • 相关阅读:
    UIView动画设置
    窗口与视图的基本概念
    OC基本框架之-字典类型
    将博客搬至CSDN
    objective-c中的深、浅拷贝
    基础算法之二分法查找
    C语言中格式字符指定输出项的数据类型和输出格式总结
    JavaScript学习笔记(9)——JavaScript语法之流程控制
    JavaScript学习笔记(8)——JavaScript语法之运算符
    JavaScript学习笔记(7)——JavaScript语法之函数
  • 原文地址:https://www.cnblogs.com/cwmizlp/p/9156826.html
Copyright © 2011-2022 走看看