Java设计模式——建造者模式

建造者模式也属于创建型模式,它提供了一种创建对象的最佳方式。

定义:将一个复杂对象构建与它的表示分离,使得同样的构建过程可以创建不同的表示
主要作用:在用户不知道 对象的建造过程和细节 的情况下就可以直接创建复杂的对象

用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)

Java设计模式——建造者模式

例子:
工厂(建造者模式):负责制造汽车(组装过程和细节在工厂内)
汽车购买者(用户):你只需要说出你需要的型号(对象的类型和内容),然后直接购买就可以使用(不需要知道汽车是如何组装的(车轮、车门、发动机、方向盘等等))

导演类Director在Builder模式中具有很重要的作用,它用于指导具体构建者如何构建产品,控制调用先后次序,并向调用者返回完整的产品类,但是有些情况下需要简化系统结构,可以吧Director和抽象建造者进行结合。

通过静态内部类方式实现零件无序装配构造,这种方式使用更加灵活,更符合定义。内部有复杂对象的默认实现,使用时可以根据用户需求*定义更改内容,并且无需改变具体的构造方式。就可以生产出不同复杂产品。

例子:在麦当劳点餐,服务员(具体建造者)可以随意搭配任意几种产品(零件)组成一款套餐(产品),然后出售给客户。比第一种方式少了指挥者,将指挥者的工作交给用户操作,使得产品的创建更加灵活。

优点:

  1. 产品的建造和表示分离,实现了解耦。使用建造者模式可以使客户端不必知道产品内部组成细节。
  2. 将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰。
  3. 具体的建造类之间是相互独立的,这有利于系统的扩展。增加新的具体建造者无需修改原有类库的代码,符合“开闭原则。

缺点:
4. 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似;如果产品之间的差异很大,则不适合使用建造者模式,因此其使用范围收到一定的限制。
5. 如果产品内部变化复杂,可能导致需要定义很多具体建造者来实现这种变化,导致系统变得很庞大。

狂神视频笔记