设计模式--生成器模式

生成器模式

前言

生成器模式(Building Pattern)与工厂方法模式有相似之处,两者都属于创建行模式,并且都是将对象创建的任务交给一个单独的类区完成。

概念

生成器模式按照一个指定的过程逐步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以创建他们,而不必知道内部的具体创建结构。生成器模式的主要思想是:抽象出创建对象的步骤,使得这些步骤的不同实现可以创建对象的不同表示。通常生成器模式被用来创建符合组合模式的产品对象。

类设计图

生成器模式的设计类图:
设计模式--生成器模式
生成器模式所包含的各组成部分意义如下:
1. Builder: 创建Product对象的抽象接口。
2. ConcreteBuilder:

  • 通过对抽象的Builder接口的具体实现,创建并组装创建这些对象的“零件”。
  • 定义并且跟踪它所创建的产品的表示。
  • 提供一个接口以便能被调用,得到产品对象。

3. Director: 使用Builder 接口创建一个完整的产品对象,它负者管理正确的对象创建顺序,从参数中接收具体的ConcreteBuilder 对象,并且执行这些对象的具体操作。
4. Product:

  • 代表待创建的复杂的对象,是ConcreteBuilder 负责创建对象的内部表示,并且定义组装过程。
  • 包含定义产品组件的子类,包括一个组装接口。

介绍

使用生成器模式的特点如下:

  1. 生成器让用户可以变化它建造产品的内部表达形式,它也隐藏了产品怎样被装配的细节。
  2. 每个具体的生成器都独立于程序的其他的生成器,因此改善了程序的模块化,并且使添加其他生成器变得简单。
  3. 由于每个生成器根据数据逐步构建最终产品,用户对生成器构建的最终产品有更多的控制。
  4. 生成器模式与抽象工厂模式有相似之处,都返回由其他一些对象组成的类的对象。主要区别是,抽象工厂模式返回一个类族,而生成器模式逐步按照次序构建一个复杂的对象,最后该对象被返回。

应用场景

:某公司要设计一个房屋选购系统,系统的房子分为两种类型:普通型(Normal House)与豪华型(Luxury House)。不同房型的区别体现在面积(Area)大小以及卧室(Bedroom)、卫生间(Bathroom)、车库(Garage)、花园(Garden)和游泳池(Swimming Pool)的数量上。
1. 设计类图:
设计模式--生成器模式

2. 代码:
代码链接:【例2.5】-生成器模式-房屋信息

世间安得双全法,不负如来不负卿