创建模式--建造者模式

视频链接: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)如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。




posted @ 2020-03-28 20:40  jyqdaisy  阅读(152)  评论(0编辑  收藏  举报