建造者模式

2021-09-26  本文已影响0人  攻城虱小马褂

建造者模式

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

如何理解建造者模式

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

案例

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

这些特点很符合工厂模式的适用特点,那用工厂模式就可以实现的案例为何要用建造者模式? 主要是一个角色包含有头、手、脚、毛发...等许多部件,不同种族不同角色的部件有许多差异。如果使用工厂模式,那么角色的创建过程会与其各个部件耦合在一起,如果部件比较多,那么角色的创建是比较复杂的。比如所以我们需要将对象的创建过程与组成对象的部件进行解耦,也就是这一章的主题---建造者模式

类图(todo)

  1. 产品类

定义产品的基本属性

  1. 抽象建造者

定义产品各个部件的构建规范

  1. 具体构建者

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

  1. 导演类

负责封装已有模块的顺序

优势

  1. 良好的封装性。产品类和建造类相对固定,将主要逻辑封装到导演类可以取得比较好的稳定性。
  2. 不需暴露产品内部细节,将产品本身与产品创建过程进行解耦。
  3. 精细控制产品创建过程。创建过程清晰,能够把控产品每个部件的创建过程。
  4. 良好的扩展性。新的需求只需要增加新的建造类就可以解决,符合开闭原则。

局限性

  1. 建造者不适合差异性很大的产品类。
  2. 产品内部变化复杂,需要定义很多建造类来实现,会导致系统变得庞大。

使用场景

  1. 相同的方法,不同的执行顺序,产生不同的事件结果
  2. 一个对象具有多个部件,但是不同的对象的部件有所差异,也可以使用建造者模式
  3. 需要隔离复杂对象的创建和使用,并使相同创建过程可以创建不同的产品

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

工厂模式职责---创建对象

建造模式职责---零件的装配以产生不同的对象

上一篇 下一篇

猜你喜欢

热点阅读