设计模式--建造者模式
快乐技术沙龙即将一周岁了,最近它又多了个妹妹叫《嗨皮吧》,春哥(秦春林)还是很给力啊!一连搞两个组织(社团 (∩_∩)),那么还是主要介绍一下妹妹嗨皮吧好啦,说起嗨皮吧还真是有很多吸引人的地方,它有线上和下线两种模式,可以在嗨皮吧的网站上交流,也可以周末了来我们这里放松、聚会、打牌、写代码、蹭网、吃饭等等,嗨皮吧正式启动第一天还是很给力很多好朋友都来捧场,一起吃饭、打牌、玩游戏(XBOX)。对了地址是:北京市海淀区西二旗领秀新硅谷A区4楼402室,欢迎大家周末来一起交流!废话不多说啦。。。。。
1、应用场景
开始今天的主题吧,今天的主题是建造者模式,按惯例还是以一个真实的场景来模拟的去描述,还是嗨皮吧(http://happy-bar.com/),嗨皮吧线上活动有一个分享技术的版块,会根据大家感兴趣的技术方向找一些该技术方向的高手、老手来录制视频与大家分享,比如:秦春林擅长:WP7、cocos2d-xna,蛋子(张智)擅长:ASP.NET、Oracle!那么这个时候嗨皮吧线上版块的嗨客们对最近的WP7版本的游戏引擎cocos2d-xna很感兴趣,我们就会找秦春林(COCOS2D核心开发人员)来为我们录制一套关于COCOS2D在WP7手机上游戏开发的视频。好吧,有代码模拟一下吧!
首先,需要有秦春林这个类我们这里叫:MrQin,有了MrQin这个类就相当于他已经到我们这里准备录制节目了,按秦春林录制节目的习惯,他喜欢:
第一步:给大家先演示下今天讲解内容的效果。方法名:DemonstrationEfect()
第二步:根据事先准备好的PPT讲解原理。方法名:Principle()
第三步:打开工程分析实现功能的代码。方法名:AnalysisOfCode()
那么秦春林录制视频的C#代码实现如下:
1. /// <summary>
2. /// 秦春林
3. /// </summary>
4. public class MrQin
5. {
6. /// <summary>
7. /// 演示效果
8. /// </summary>
9. public void DemonstrationEfect()
10. {
11. Console.WriteLine("演示WP7-COCOS2D,游戏效果!");
12. }
13.
14. /// <summary>
15. /// PPT原理讲解
16. /// </summary>
17. public void Principle()
18. {
19. Console.WriteLine("PPT讲解实现原理");
20. }
21.
22. /// <summary>
23. /// 分析代码
24. /// </summary>
25. public void AnalysisOfCode()
26. {
27. Console.WriteLine("根据原理分析代码");
28. }
29. }
视频录制完成后发现还有很多嗨客对ASP.NET + Oracle的WEB项目方面的知识,我们就会找擅长这方面的程序员蛋子(张智)来为大家录制一段关于这个技术的视频,那么我们还是需要一个类就是张智类,定名为:MrZhang吧,MrZhang录制视频喜欢的流程是:
第一步(与MrQin一样):给大家先演示下今天讲解内容的效果。方法名:DemonstrationEfect()
第二步:现场代码实现。方法名:Coding()
第三步:分析与回顾关键点。AnalysisOfKeyPoints()
代码实现如下:
1. /// <summary>
2. /// 程序员蛋子张智
3. /// </summary>
4. public class MrZhang
5. {
6. /// <summary>
7. /// 演示效果
8. /// </summary>
9. public void DemonstrationEfect()
10. {
11. Console.WriteLine("演示ASP.NET+Oracle Web项目效果!");
12. }
13.
14. /// <summary>
15. /// 代码实现
16. /// </summary>
17. public void Coding()
18. {
19. Console.WriteLine("边代码实现边讲解原理!");
20. }
21.
22. /// <summary>
23. /// 分析与回顾关键点
24. /// </summary>
25. public void AnalysisOfKeyPoints()
26. {
27. Console.WriteLine("分析代码实现中的关键技术点");
28. }
29. }
这个时候我们嗨皮吧遇到一个问题,就是每个人的讲解方式都有优点,我们需要把每个人讲解过程的优点都提取出来融合成一个固定的规范流程,最后我们决定以后所有嗨皮吧的视频都暂时以一种风格来录制.
第一步:给大家先演示下今天讲解内容的效果。
第二步:PPT给大家讲解必须的基础知识与原理
第三部:代码实现内容。
第四部:关键点分析。
那我们如何改造我们上边的代码呢?既然我们可以吧一个通用的流程分析出来,将来不管录制的是WP7的还是ASP.NET还是WCF等,我们都可以以这个流程来录制,那么这里就体现出一种模式的优势啦,什么模式? 答:建造者模式。
2、建造者模式
建造者模式:将一个复杂对象的构建与他的表示分离,是的同样的构建过程可以创建不同的表示。
建造者模式类图如下:
指挥者(Dicrector)类
补充:软件开发 , C++ ,