设计模式-建造者模式

导览:开篇(23种设计模式)、面向对象设计的6大原则

创建型 结构型 行为型
工厂方法(Factory Method)<类> 适配器(Adapter)<类, 对象> 解释器(Interpreter)<类>
抽象工厂(Abstract Factory)<对象> 桥接(Bridge)<对象> 模板方法(Template Method)<对象>
建造者(Builder)<对象> 组合(Composite)<对象> 责任链(Chain of Responsibility)<对象>
原型(Prototype)<对象> 装饰者(Decorator)<对象> 命令(Command)<对象>
单例(Singleton)<对象> 外观(Facade)<对象> 迭代器(Iterator)<对象>
享元(Flyweight)<对象> 中介者(Mediator)<对象>
代理(Proxy)<对象> 备忘录(Memento)<对象>
观察者(Observer)<对象>
状态(State)<对象>
策略(Strategy)<对象>
访问者(Visitor)<对象>

建造者模式

模式描述

设计模式-建造者模式_第1张图片
建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。通过Director(导向器)封装了产品各个部分的装配过程,使用Builder(建造者)实现了各部分的构造,两者之间分离。因此,同一个Director可以使用不同的ConcreteBuilder产生不同的产品,同一个ConcreteBuilder也可以使用不同的Director产生不同的产品。
其中,Builder的BuildPart接口可以有多个(BuildPartA、BuildPartB…)。

优缺点

优点:

  • Builder提供了抽象接口,因此通过替换ConcreteBuilder可以改变一个产品的内部表示
  • 将构造代码和表示代码分开,Builder接口提供了所有接口,使用不同的Director可以创建不同的产品
  • Director将构造过程集中,可对构造过程进行更精细的控制

缺点:

  • Builder接口必须足够普遍,否则无法使用与各种Director,也就是说创建的产品必须有较多共同点

适用场景

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。例如装修一套房子,组成部分都是沙发、床、柜子等,装配方式就是摆放方式不同,但是沙发、床的创建过程是独立于房子的装修的。
  • 当构造过程必须允许被构造的对象有不同的表示时。例如创建一个游戏人物,需要支持各种不同的特征。

相关模式

抽象工厂(AbstractFactory)与建造者(Builder)相似,主要的区别是Builder模式着重于一步步构造一个复杂对象;AbstractFactory着重于多个系列的产品对象。Builder在最后一步返回产品,而AbstractFactory产品是立即返回的。
组合模式(Composite)通常是用Builder生成的。

你可能感兴趣的:(设计模式,设计模式)