模板方法模式

定义

定义实现业务的架构于基类中,制定业务模板,将具体的实现步骤延迟到基类中去,根据具体类实现不同的架构方法。

举个简单的例子:例如上班:起床---交通工具---到公司工作。这就是一个业务模板,而其中变化的是:根据不同人的身份会选择不同的交通方式上班。

类图

代码

 1  public class Employee
 2     {
 3         /// <summary>
 4         ///上班
 5         /// </summary>
 6         public void Work()
 7         {
 8             GetUp();
 9 
10         }
11         /// <summary>
12         /// 起床
13         /// </summary>
14         private void GetUp()
15         {
16             Console.WriteLine("Get up");
17         }
18         /// <summary>
19         /// 工作
20         /// </summary>
21         private void DoWork()
22         {
23             Console.WriteLine("just do your job");
24         }
25         /// <summary>
26         /// 上班交通方式
27         /// </summary>
28         protected virtual void GoToWork()
29         {
30             Console.WriteLine("by bus");
31         }
32     }
33     public class Manager : Employee
34     {
35         protected override void GoToWork()
36         {
37             Console.WriteLine("drive car");
38         }
39     }
40     public class Boss : Employee
41     {
42         protected override void GoToWork()
43         {
44             Console.WriteLine("on foot");
45         }
46     }
47 
48     public class TemplateClient
49     {
50         public void TestTemplate()
51         {
52             Employee emp = new Employee();
53             emp.Work();
54             Manager manager = new Manager();
55             manager.Work();
56             Boss boss = new Boss();
57             boss.Work();
58         }
59     }

总结

关于模板方法模式,我们在封装变化是可以是使用虚方法、也可以使用抽象方法,抽象方法为抽象类是不可以实现的,而虚方法的类则可以,这要看具体的业务。这个模式我们也是经常用到的,将业务确定好,根据不同的业务需求重写对应的方法。到达封装变化,简化代码的效果。

Top
收藏
关注
评论
原文地址:https://www.cnblogs.com/Joy-et/p/4893423.html