设计模式纵谈4-Builder

来源:互联网 发布:商家怎么去跑淘宝客 编辑:程序博客网 时间:2024/06/03 15:24

3.Builder生成器(创建型模式)
Builder模式的缘起

.假设创建游戏中的一个房屋House设施,该House有几个部分组成,且
各部分富于变化。

.如果使用最直观的设计方法,每一个房屋部分的变化,都
将导致房屋构建的重新修正。。。。

动机 motivation
在软件系统中,有时候面临着 一个复杂对象 的创建工作,其通常由各个部分的子对象
用一定的算法构成,由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化
但是将它们组合在一起的算法却相对稳定。   

如何应对这种变化?如何提供一种 封装机制 来隔离出
复杂对象的各个部分的变化,从而保持系统中的稳定构建算法不随着需求改变而改变?


(修改某一个部分而改变某一部分的思考)

Intent
将一个复杂对象的构造与其表示相分离,使得同样的构建过程可以
创建不同的表示。

不同的表示就是变化

Structure

Director (客户程序)
Builder
ConcreteBuilder
Product

UML类图

协作图 Collaborations

系统设计师,并不是设计到每个具体类的实现,而是类
之间的相互交互和接口.

Builder模式的几个要点
.Builder模式主要用于 分步骤构建一个复杂的对象。而这其中 分步骤是一个稳定的算法,而
复杂对象的各个部分则经常变化。

.变化点在哪里,封装哪里---Builder模式主要在于应对 复杂对象各个部分 的频繁需求变动。其缺点在于难以
应对 分步骤构建算法的 需求变动。

.Abstract Factory模式解决 系列对象 的需求变化,Builder模式解决 对象
部分 的需求变化。Builder模式通常和Composisite模式组合使用。


如果软件需求永远是不变化的或者需求全部都是变化的,也就没有必要
使用设计模式。

所有的设计模式 都不是捕获变化,封装变化,隔离变化.

原创粉丝点击