代理模式演示(C++)三分钟读懂
建造者模式(Builder Pattern)是一种创建型设计模式,它允许你创建复杂对象的过程与其表示分离,从而可以使用相同的构建过程来创建不同的表示。
下面是一个使用C++和Qt框架演示建造者模式的示例:
演示代码:
#include <QCoreApplication>
#include <QDebug>
// 产品类
class Product {
public:
// 写入相关参数
void setPartA(const QString& partA) {
m_partA = partA;
}
void setPartB(const QString& partB) {
m_partB = partB;
}
void setPartC(const QString& partC) {
m_partC = partC;
}
// 打印参数
void show() {
qDebug() << "Product parts: " << m_partA << ", " << m_partB << ", " << m_partC;
}
private:
// 产品参数
QString m_partA;
QString m_partB;
QString m_partC;
};
// 抽象构造者类
class Builder {
public:
virtual void buildPartA() = 0;
virtual void buildPartB() = 0;
virtual void buildPartC() = 0;
virtual Product* getProduct() = 0;
};
// 具体构造者类 继承抽象构造类
class ConcreteBuilder : public Builder {
public:
// 创建一个 产品类
ConcreteBuilder() {
m_product = new Product();
}
// 给产品类 写入参数
void buildPartA() override {
m_product->setPartA("Part A");
}
void buildPartB() override {
m_product->setPartB("Part B");
}
void buildPartC() override {
m_product->setPartC("Part C");
}
// 返回产品指针
Product* getProduct() override {
return m_product;
}
private:
Product* m_product;
};
// 指导者类 用于给具体构造类写入参数
class Director {
public:
// 构造产品 传入具体构造类的指针
void construct(Builder* builder) {
builder->buildPartA();
builder->buildPartB();
builder->buildPartC();
}
};
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
Director director; // 指导者实例
ConcreteBuilder builder; // 具体构造者实例
director.construct(&builder); // 传入对象给指导者
Product* product = builder.getProduct(); // 构造者将指导者构造好的对象返回给 产品类
product->show(); // 输出产品参数
return a.exec();
}
在这个示例中,我们定义了一个产品类Product
,包含了产品的不同部分。抽象构造者类Builder
定义了构建产品的接口,具体构造者类ConcreteBuilder
实现了构建产品的具体步骤。指导者类Director
负责控制构建的过程。
在main
函数中,我们创建了一个指导者对象Director
和一个具体构造者对象ConcreteBuilder
,指导者通过具体构造者构建产品,并最终得到一个完整的产品对象并展示。
建造者模式的优点:
-
分离构建过程和表示: 建造者模式允许你通过相同的构建过程创建不同的表示,从而将构建过程与具体表示分离。
-
更好的控制对象的创建过程: 建造者模式可以让你更加灵活地控制对象的创建过程,可以根据需求定制不同的构建流程。
-
更好的复用性: 可以复用相同的构建过程来构建不同的对象,提高代码的复用性。
建造者模式的缺点:
-
增加了对象的数量: 建造者模式引入了多个类(产品类、抽象构造者类、具体构造者类),可能会增加系统中类的数量,导致复杂性增加。
-
构建过程的复杂性: 如果产品对象的部分较多,构建过程也会变得复杂,需要仔细设计构造者类的接口和实现。
建造者模式适用于创建复杂对象,特别是当对象的创建过程比较复杂或者存在多个表示时。它可以帮助我们更好地控制对象的创建过程,提高灵活性和复用性。
建造者模式类图:
原文地址:https://blog.csdn.net/qq_39085747/article/details/143024540
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!