目的:在软件开发的过程中不可避免地会碰到一些复杂的对象。如果直接去创建这些复杂的对象,会使代码变得难于理解和维护,而且对于大多数用户而言他们并不关心对象各个成员的创建过程。Builder的作用就是将对象各个成员的创建和组装过程分离,根据用户的需求一步一步创建复杂的对象。用户只需要指定类型就可以得到对应的复杂对象,其内部的具体构造细节则对用户透明。
模式的基本构成::
说明:
Director 面向用户的类,用户用之来创建需要的对象并获取
Builder 对象各个部件的创建者。
ConcreteBuilder Builder的子类,运用多态的方式,实现对象部件的扩展。
product 最终被创建的对象。
时序图:
生成器的优点:
1,将部件的创建和组合分离。设计者可以方面的更改部件的创建细节,而不需要使用者做任何更改。可以通过继承的方式创建全新的Product。这些对使用者来说都是透明的。
2,设计者可以做到对对象创建的精细控制。只有当所有的部件全部成功创建完成之后,才能够返回给使用者完整的对象。
3,对使用者来说,所有的创建过程都是透明的。只需要调用创建接口和获取接口就可以拿到自己想要的对象。