乐趣区

关于设计模式:设计模式建造者模式

建造者模式

将一个简单对象的构建与他的示意拆散,使得同样的构建过程能够创立不同的示意

如何了解建造者模式

建造者模式就是将建造简单对象的过程和组成对象的部件进行解耦。

案例

游戏公司设计游戏角色,其中人、兽、精灵三个种族。而每个种族又领有不同的英雄角色。所以角色设计应该具备以下特点:

  • 角色根本属性统一
  • 角色创立过程简单,不裸露创立细节
  • 合乎开闭准则,能够随时新增角色
  • 各个角色间彼此不受影响

这些特点很合乎工厂模式的实用特点,那用工厂模式就能够实现的案例为何要用建造者模式?次要是一个角色蕴含有头、手、脚、毛发 … 等许多部件,不同种族不同角色的部件有许多差别。如果应用工厂模式,那么角色的创立过程会与其各个部件耦合在一起,如果部件比拟多,那么角色的创立是比较复杂的。比方所以咱们须要将对象的创立过程与组成对象的部件进行解耦,也就是这一章的主题 — 建造者模式

类图(todo)

  1. 产品类

定义产品的根本属性

  1. 形象建造者

定义产品各个部件的构建标准

  1. 具体构建者

实现形象构建者的所有办法,返回一个具体的产品

  1. 导演类

负责封装已有模块的程序

  • 隔离客户与生产过程
  • 管制产品的生成过程

劣势

  1. 良好的封装性。产品类和建造类绝对固定,将次要逻辑封装到导演类能够获得比拟好的稳定性。
  2. 不需裸露产品外部细节,将产品自身与产品创立过程进行解耦。
  3. 精密管制产品创立过程。创立过程清晰,可能把控产品每个部件的创立过程。
  4. 良好的扩展性。新的需要只须要减少新的建造类就能够解决,合乎开闭准则。

局限性

  1. 建造者不适宜差异性很大的产品类。
  2. 产品外部变动简单,须要定义很多建造类来实现,会导致系统变得宏大。

应用场景

  1. 雷同的办法,不同的执行程序,产生不同的事件后果
  2. 一个对象具备多个部件,然而不同的对象的部件有所差别,也能够应用建造者模式
  3. 须要隔离简单对象的创立和应用,并使雷同创立过程能够创立不同的产品

建造者模式与工厂模式的区别

工厂模式职责 — 创建对象

  • 将创立过程封装到工厂类,有工厂类提供最终产品。

建造模式职责 — 整机的拆卸以产生不同的对象

  • 负责创立简单对象,须要对对象的部件进行拆卸以产生不同成果的对象,具备的建造过程交给指挥类。由指挥类负责将各个组件依照规定组建为产品。
退出移动版