设计模式Python版 建造者模式


前言

GOF设计模式分三大类:

  • 创建型模式:关注对象的创建过程,包括单例模式、简单工厂模式、工厂方法模式、抽象工厂模式、原型模式和建造者模式。
  • 结构型模式:关注类和对象之间的组合,包括适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式和代理模式。
  • 行为型模式:关注对象之间的交互,包括职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。

一、建造者模式

建造者模式(Builder Pattern)

  • 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  • 解决问题:如何一步步创建一个包含多个组成部分的复杂对象?

  • 使用场景:

    • 建造者模式向客户端返回的不是一个简单的产品,而是一个由多个部件组成的复杂产品
    • 需要生成的产品对象的属性相互依赖,需要指定其生成顺序。
  • 组成:

    • 复杂产品(Product):最终要构建的复杂对象。 复杂对象是指那些包含多个成员变量的对象,这些成员变量也称为部件或零件。

    • 抽象建造者(Builder):为一个抽象接口,定义了构建产品的各个部件的操作。

    • 具体建造者(Concrete Builder):实现抽象建造者的接口,定义并明确各个部件的具体实现。

    • (可省略)指挥者(Director):负责安排已有模块的构建顺序,它主要用来控制产品的创建过程。

  • 优点:

    • 客户端无须知道复杂对象的内部组成部分与装配方式,只需要知道所需的建造者类型即可。
    • 建造者模式关注如何一步一步地创建一个复杂对象,不同的具体建造者定义了不同的创建过程,且具体建造者相互独立,增加新的建造者非常方便,无须修改已有代码,系统具有较好的扩展性。
    • 可以更加精细地控制产品的创建过程。
  • 缺点:

    • 建造者模式所创建的产品一般具有较多的共同点,其组成部分相似。否则不适用。

在这里插入图片描述

二、建造者模式示例

使用建造者模式来实现游戏角色的创建

  • ActorController充当指挥者,ActorBuilder充当抽象建造者,HeroBuilder、AngelBuilder和DevilBuilder充当具体建造者,Actor充当复杂产品。
"""复杂产品"""

class Actor:
    def __init__(self, type=None, sex=None, face=None, costume=None, hairstyle=None):
        self.type = type
        self.sex = sex
        self.face = face
        self.costume = costume
        self.hairstyle = hairstyle


"""抽象建造者"""

class ActorBuilder:
    def __init__(self):
        self.actor = Actor()

    def build_type(self):
        raise NotImplementedError

    def build_sex(self):
        raise NotImplementedError

    def build_face(self):
        raise NotImplementedError

    def build_costume(self):
        raise NotImplementedError

    def build_hairstyle(self):
        raise NotImplementedError

    def create_actor(self) -> Actor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值