建造者模式

建造者模式是一种用于创建复杂对象的设计模式,它通过逐步构造过程来隔离对象组装的细节。与工厂模式相比,建造者模式更注重步骤顺序。在对象属性有依赖和约束时,或构造过程需要特定顺序时,使用建造者模式可以避免构造函数过长。该模式由实际对象、建造者抽象类、建造者实现类和指挥者组成,常见应用场景包括ORM的延迟加载。
摘要由CSDN通过智能技术生成

建造者模式(Builder Pattern)又叫生成器模式,有点类似工厂模式,两者都是用专门的类来实现对象的创建。

  • 工厂模式用来创建一系列相关类型但不同的对象。
  • 建造者模式则用来创建一种类型的复杂对象,通过设置不同的可选参数,定制化创建不同对象。

主要区别是建造者模式着重一步步构造一个复杂对象,而抽象工厂模式着重于多个系列的产品对象。

为什么使用建造者模式

  • 一个类有很多属性,构造函数和参数过于长。
  • 属性之间有一定的依赖和约束关系。
  • 对象的创建需要遵循一定的顺序或者步骤

有一句话对建造者模式总结的很好:

当我们想要创建一个由多个部分构成的对象,而且他们的构建需要一步接一步的地完成,只有当各个部分都创建好,这个对象才算完整。

这正是 建造者设计模式的用武之地。

建造者模式的优缺点

优点

  1. 建造者独立,易扩展。
  2. 便于控制细节风险。
  3. 将对象的构造与表现解耦

缺点

  1. 产品必须有共同点,范围有限制。
  2. 如果内部变化复杂,会有很多的建造类。

建造者模式的构成

  1. 实际对象:实际要返回的对象
  2. 建造者抽象类:定义建造者实体类需要实现的功能。
  3. 建造者实体类:继承建造者抽象类,具体实现抽象类方法。
  4. 指挥者类:用来控制建造者内部构建的顺序及流程。

应用场景

最常用的一个场景就是操作数据库的 ORM。回想一下,ORM 中一个很重要的概念:延迟加载,其实就是建造者模式最常见的应用。

下面通过一个生产手机的例子来了解一下建造者模式的各个构成部分。

实际对象

要生产一台手机,基本的组件有《屏幕、电池、cpu》,我们的手机对象定义如下:

class Phone:
    def __init__(self, screen=None, battery=None, cpu=None):
        self
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tlqwanttolearnit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值