创建模式--建造者模式
视频链接:https://www.bilibili.com/video/BV1ba4y1t73Z/
1.建造者模式的定义
在软件工程中,创建型模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象。基本的对象创建方式可能会导致设计上的问题,或增加设计的复杂度。创建型模式通过以某种方式控制对象的创建来解决问题。
创建型模式由两个主导思想构成。一是将系统使用的具体类封装起来,二是隐藏这些具体类的实例创建和结合的方式。
创建型模式又分为对象创建型模式和类创建型模式。对象创建型模式处理对象的创建,类创建型模式处理类的创建。详细地说,对象创建型模式把对象创建的一部分推迟到另一个对象中,而类创建型模式将它对象的创建推迟到子类中。
创建模式可以解决的问题:
(1)方便用户创建复杂的对象(不需要知道实现过程)
(2)代码复用性和封装性(将对象构建过程和细节进行封装 和复用)
就像是造汽车和买汽车时,工厂(作为建造者模式的角色)它负责制造汽车,组装过程和细节再工厂内进行。汽车购买者(作为用户的角色)你只需要说出你需要的型号然后就可以直接购买使用了,而你不需要知道汽车是怎么组装的。
2.建造者模式中的角色
建造者(Builder):为创建一个产品对象的各个部件指定抽象接口。
具体建造者(ConcreteBuilder):实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并 提供一个检索产品的接口。
指挥者(Director):指挥并构造一个使用Builder接口的对象。
产品(Product):表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程,包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
这些角色之间的关系是:
- 指挥者(Director)直接和客户(Client)进行需求沟通;
- 沟通后指挥者将客户创建产品的需求划分为各个部件的建造请求(Builder);
- 将各个部件的建造请求委派到具体的建造者(ConcreteBuilder);
- 各个具体建造者负责进行产品部件的构建;
- 最终构建成具体产品(Product)。
如图:

3.建造者模式的优缺点
优点:
(1)使用建造者模式可以使客户端不必知道产品内部组成的细节。
(2)具体的建造者类之间是相互独立的,这有利于系统的扩展。
(3)具体的建造者相互独立,因此可以对建造的过程逐步细化,而不会对其他模块产生任何影响。
缺点:
(1)建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。
(2)如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。