3.Builder生成器(创建型模式)
Builder模式的缘起
.假设创建游戏中的一个房屋House设施,该House有几个部分组成,且
各部分富于变化。
.如果使用最直观的设计方法,每一个房屋部分的变化,都
将导致房屋构建的重新修正。。。。
动机 motivation
在软件系统中,有时候面临着 一个复杂对象 的创建工作,其通常由各个部分的子对象
用一定的算法构成,由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化
但是将它们组合在一起的算法却相对稳定。
如何应对这种变化?如何提供一种 封装机制 来隔离出
复杂对象的各个部分的变化,从而保持系统中的稳定构建算法不随着需求改变而改变?
(修改某一个部分而改变某一部分的思考)
‘
Intent
将一个复杂对象的构造与其表示相分离,使得同样的构建过程可以
创建不同的表示。
不同的表示就是变化
Structure
Director (客户程序)
Builder
ConcreteBuilder
Product
UML类图
协作图 Collaborations
系统设计师,并不是设计到每个具体类的实现,而是类
之间的相互交互和接口.
Builder模式的几个要点
.Builder模式主要用于 分步骤构建一个复杂的对象。而这其中 分步骤是一个稳定的算法,而
复杂对象的各个部分则经常变化。
.变化点在哪里,封装哪里---Builder模式主要在于应对 复杂对象各个部分 的频繁需求变动。其缺点在于难以
应对 分步骤构建算法的 需求变动。
.Abstract Factory模式解决 系列对象 的需求变化,Builder模式解决 对象
部分 的需求变化。Builder模式通常和Composisite模式组合使用。
如果软件需求永远是不变化的或者需求全部都是变化的,也就没有必要
使用设计模式。
所有的设计模式 都不是捕获变化,封装变化,隔离变化.