一、概念
Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。
二、Builder模式中的角色:
Builder(建造者)
Builder角色定义负责定义用于生成实例的接口(API)。Builder角色中准备了生成实例的方法。
ConcreteBuilder(具体的建造者)
ConcreteBuilder角色是负责实现Builder角色的接口的类(API)。这里定义了在生成实例实际被调用的方法。此外,在ConcreteBuilder角色中还定义了获取最终生成结果的方法
Director(监工)
director角色负责使用Builder角色的接口(API)来生成实例。它并不依赖于ConcreteBuilder角色。为了确保ConcreteBuilder角色是如何定义的,Director角色都能正常工作,它只调在Builder角色中被定义的方法。
Client(使用者)
该角色使用了Builder模式
三、Builder模式的优缺点
优点:
1.客户端的代码更容易写,使用了链式调用,可读性非常好
2.不会产生同一对象不一致的状态
缺点:
1.会产生多余的Builder对象,消耗内存
四、单例模式的现实使用场景
创建难以一气喝成的复杂对象。