2.5 《硬啃设计模式》第7章 车手选车 - 生成器(Builder Pattern)

某赛车游戏,玩家能够选择不一样的车,这些车实际上是采用不一样性能的配件组成的,如:车胎、发动机等。
玩家选择一部车,其实就是new了一部车。
你如何考虑“new car”的代码?

要new这个车,可能须要先new出车的各个配件,而后将这些配件组合成car。
某些复杂对象要new出来时,每每须要先new出它的子对象,而后组装成进父对象中,这些子对象有时候甚至组成了“树”结构。
生成器模式就是用来解决这问题的。

赛车游戏用生成器的解决方案:

  生成器1.png

CAR_Builder定义了增长车组件的几个方法,还有CreateCar()方法。
BenZ_Builder类是具体生产奔驰车的类,该类集成了CAR_Builder,而且根据须要编写了生产奔驰车的特有代码。
同理,Ferrari_Builder是用来生产法拉利的,若是想增长更多的车品种,再增长一个类继承CAR_Builder即可。

生成器的 类图

  生成器2.png设计模式



直接看此图会有点难以理解,请先理解上面的例子。
抽象类Builder的责任是创建各组件,CreateComponent()方法不必定只有一个的,可根据须要添加多个。
创建出来的组件多是树形结构,Component与Leaf的关系就是表示这个意思。
各组件最终须要组合在一块儿,最终咱们须要有一个相似CreateCar()的方法来获得这个包含各组件的父对象。性能

 

 


 

 

请看下一文……
 
 
 
 
 
 
 
 
 
 
 
 

做者:张传波ui

创新工场创业课堂(敏捷课程)讲师spa

软件研发管理资深顾问设计

CMMI首席专家对象

《火球——UML大战需求分析》做者blog

《硬啃设计模式》做者继承

www.umlonline.org创办人
游戏

相关文章
相关标签/搜索