设计模式--建造者模式(Builder Pattern)

建造者模式(Builder Pattern)是一种创建型设计模式,它提供了一种构建对象的最佳方式。建造者模式将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式主要包含以下几个角色:

  1. Builder(抽象建造者):为创建一个Product对象的各个部件指定抽象接口。
  2. ConcreteBuilder(具体建造者):实现Builder的接口以构造和装配该产品的各个部件,定义并明确它所创建的表示,并提供一个检索产品的接口。
  3. Director(指挥者):构造一个使用Builder接口的对象。
  4. Product(产品角色):表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。

建造者模式的主要优点是:

  • 将复杂产品的创建步骤分解在不同的方法中,使得创建过程更清晰。
  • 允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。

建造者模式适用于以下场景:

  • 需要生成的对象具有复杂的内部结构。
  • 需要生成的对象内部属性本身相互依赖。

以下是一个简单的C++实现的建造者模式(Builder Pattern)示例:

#include <iostream>
#include <string>

// 产品类
class Product {
public:
    void setPartA(const std::string& partA) {
        partA_ = partA;
    }
    void setPartB(const std::string& partB) {
        partB_ = partB;
    }
    void show() {
        std::cout << "Product contains: " << partA_ << ", " << partB_ << std::endl;
    }

private:
    std::string partA_;
    std::string partB_;
};

// 抽象建造者类
class Builder {
public:
    virtual void buildPartA() = 0;
    virtual void buildPartB() = 0;
    virtual Product* getProduct() = 0;
    virtual ~Builder() {}
};

// 具体建造者类
class ConcreteBuilder : public Builder {
public:
    ConcreteBuilder() {
        product_ = new Product();
    }
    void buildPartA() override {
        product_->setPartA("Part A");
    }
    void buildPartB() override {
        product_->setPartB("Part B");
    }
    Product* getProduct() override {
        return product_;
    }

private:
    Product* product_;
};

// 指挥者类
class Director {
public:
    Director(Builder* builder) : builder_(builder) {}
    void construct() {
        builder_->buildPartA();
        builder_->buildPartB();
    }

private:
    Builder* builder_;
};

int main() {
    Builder* builder = new ConcreteBuilder();
    Director* director = new Director(builder);

    director->construct();
    Product* product = builder->getProduct();
    product->show();

    delete director;
    delete builder;

    return 0;
}

在这个例子中,Product是产品类,Builder是抽象建造者类,定义了创建产品的接口。ConcreteBuilder是具体建造者类,实现了抽象建造者接口中定义的接口。
Director是指挥者类,它构造一个使用Builder接口的对象。在Director的construct接口中,调用了Builder的buildPartA和buildPartB接口。
通过这种方式,我们可以将复杂产品的创建步骤分解在不同的方法中,使得创建过程更清晰,允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java设计模式是一组经过实践验证的面向对象设计原则和模式,可以帮助开发人员解决常见的软件设计问题。下面是常见的23种设计模式: 1. 创建型模式(Creational Patterns): - 工厂方法模式(Factory Method Pattern) - 抽象工厂模式(Abstract Factory Pattern) - 单例模式(Singleton Pattern) - 原型模式(Prototype Pattern) - 建造者模式Builder Pattern) 2. 结构型模式(Structural Patterns): - 适配器模式(Adapter Pattern) - 桥接模式(Bridge Pattern) - 组合模式(Composite Pattern) - 装饰器模式(Decorator Pattern) - 外观模式(Facade Pattern) - 享元模式(Flyweight Pattern) - 代理模式(Proxy Pattern) 3. 行为型模式(Behavioral Patterns): - 责任链模式(Chain of Responsibility Pattern) - 命令模式(Command Pattern) - 解释器模式(Interpreter Pattern) - 迭代器模式(Iterator Pattern) - 中介者模式(Mediator Pattern) - 备忘录模式(Memento Pattern) - 观察者模式(Observer Pattern) - 状态模式(State Pattern) - 策略模式(Strategy Pattern) - 模板方法模式(Template Method Pattern) - 访问者模式(Visitor Pattern) 4. 并发型模式(Concurrency Patterns): - 保护性暂停模式(Guarded Suspension Pattern) - 生产者-消费者模式(Producer-Consumer Pattern) - 读写锁模式(Read-Write Lock Pattern) - 信号量模式(Semaphore Pattern) - 线程池模式(Thread Pool Pattern) 这些设计模式可以根据问题的特点和需求来选择使用,它们提供了一些可复用的解决方案,有助于开发高质量、可维护且易于扩展的软件系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值