首页 > 其他 > 详细

设计模式之模板方法模式

时间:2016-02-23 15:54:16      阅读:225      评论:0      收藏:0      [点我收藏+]

Template Method Pattern

模板方法模式组成对象:

  • AbstractClass:定义并实现模板方法,声明模板方法中使用到的特定步骤,需要延迟到子类实现的,则为抽象方法。(模板方法是不可变的,可为密封)
  • ConcreteClass:实现抽象方法,这样就将相应的实现延迟到了子类

模板方法模式类图:

技术分享

模板方法实例:

  业务场景,有一个旅游项目,一定会包含吃特色美食以及看特色景点,因为会有很多地方,各个地方都有差异。这里吃和看两个行为都是固定的,但是具体吃什么和看什么都是不固定,所以这里用模板方法模式

类图:

技术分享

实例代码

技术分享
 1     /// <summary>
 2     /// 旅游项目
 3     /// </summary>
 4     abstract class Tourism
 5     {
 6         public void Travel()
 7         {
 8             Console.WriteLine("景点:" + GetScenerySpot());
 9             Console.WriteLine("美食:" + GetFood());
10         }
11 
12         protected abstract string GetScenerySpot();
13         protected abstract string GetFood();
14     }
15 
16 
17     class ShangHaiTourism : Tourism
18     {
19         protected override string GetScenerySpot()
20         {
21             return "东方明珠";
22         }
23 
24         protected override string GetFood()
25         {
26             return "本帮菜";
27         }
28     }
29 
30 
31     class JiangxiTourism : Tourism
32     {
33         protected override string GetScenerySpot()
34         {
35             return "庐山";
36         }
37 
38         protected override string GetFood()
39         {
40             return "赣菜";
41         }
42     }
业务代码
技术分享
 1         static void Main(string[] args)
 2         {
 3             Tourism tourism = new JiangxiTourism();
 4             tourism.Travel();
 5             tourism = new ShangHaiTourism();
 6             tourism.Travel();
 7 
 8             Console.ReadLine();
 9         }
10     }
调用代码

技术分享

 模板方法模式就是一个比较简单的多态的应用。

设计模式之模板方法模式

原文:http://www.cnblogs.com/XzcBlog/p/5210039.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!