建造者模式是一种创建型设计模式,它允许通过一步一步地指导构建过程来创建复杂对象。该模式将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式通常包含以下几个角色:

1. 产品(Product): 表示被构建的复杂对象。通常包含多个部分。
2. 抽象建造者(Builder): 声明了构建产品各个部分的抽象接口。
3. 具体建造者(Concrete Builder): 实现了抽象建造者接口,负责构建和装配产品的各个部分。
4. 指挥者(Director): 负责使用建造者接口构建产品。指挥者通常不知道具体的产品是如何被构建和组装的。

以下是一个简单的 Python 示例:
from abc import ABC, abstractmethod

# 产品
class Computer:
    def __init__(self):
        self.cpu = None
        self.memory = None
        self.storage = None

    def __str__(self):
        return f"Computer with CPU: {self.cpu}, Memory: {self.memory}, Storage: {self.storage}"

# 抽象建造者
class Builder(ABC):
    @abstractmethod
    def build_cpu(self):
        pass

    @abstractmethod
    def build_memory(self):
        pass

    @abstractmethod
    def build_storage(self):
        pass

    @abstractmethod
    def get_computer(self):
        pass

# 具体建造者
class ConcreteBuilder(Builder):
    def __init__(self):
        self.computer = Computer()

    def build_cpu(self):
        self.computer.cpu = "Intel i7"

    def build_memory(self):
        self.computer.memory = "16GB"

    def build_storage(self):
        self.computer.storage = "512GB SSD"

    def get_computer(self):
        return self.computer

# 指挥者
class Director:
    def __init__(self, builder):
        self.builder = builder

    def construct(self):
        self.builder.build_cpu()
        self.builder.build_memory()
        self.builder.build_storage()

# 客户端代码
builder = ConcreteBuilder()
director = Director(builder)
director.construct()
computer = builder.get_computer()
print(computer)

在这个示例中,Computer 是产品,Builder 是抽象建造者,ConcreteBuilder 是具体建造者,Director 是指挥者。Director 通过调用建造者的方法来构建产品。客户端代码可以选择不同的具体建造者来构建不同的产品。这样,通过指挥者的协调,可以构建具有不同部分的复杂对象。


转载请注明出处:http://www.zyzy.cn/article/detail/13940/设计模式