c plus plus 建造者模式
时间: 2023-09-26 15:12:36 浏览: 38
C++中的建造者模式(Builder Pattern)是一种创建型设计模式,它可以将复杂对象的构建过程与其表现相分离,从而使得同样的构建过程可以创建不同的表现形式。具体来说,在建造者模式中包含一个Director(指导者)、一个Builder(建造者)和具体的产品(Product)。Director 根据客户端传来的不同的建造者实例,决定具体的产品构建过程,Builder 负责具体构建每个部分,并最终组装成一个完整的 Product 对象。这样一来,客户端就可以通过指导者来创建出不同的表现形式的产品,而不必关心其具体构建过程。
相关问题
用 C plus plus 写一个建造者模式
好的,您可以参考以下代码实现:
```C++
#include<iostream>
using namespace std;
//产品类
class Product
{
public:
void setPartA(const string& s)
{
partA = s;
}
void setPartB(const string& s)
{
partB = s;
}
void setPartC(const string& s)
{
partC = s;
}
void show()
{
cout << "PartA:" << partA << endl;
cout << "PartB:" << partB << endl;
cout << "PartC:" << partC << endl;
}
private:
string partA;
string partB;
string partC;
};
//抽象建造者
class Builder
{
public:
virtual void buildPartA() = 0;
virtual void buildPartB() = 0;
virtual void buildPartC() = 0;
virtual Product* getResult() = 0;
};
//具体建造者
class ConcreteBuilder : public Builder
{
public:
ConcreteBuilder()
{
product = new Product();
}
void buildPartA()
{
product->setPartA("A");
}
void buildPartB()
{
product->setPartB("B");
}
void buildPartC()
{
product->setPartC("C");
}
Product* getResult()
{
return product;
}
private:
Product* product;
};
//指挥者
class Director
{
public:
Director(Builder* builder)
{
this->builder = builder;
}
void construct()
{
builder->buildPartA();
builder->buildPartB();
builder->buildPartC();
}
private:
Builder* builder;
};
int main()
{
Builder* builder = new ConcreteBuilder();
Director* director = new Director(builder);
director->construct();
Product* product = builder->getResult();
product->show();
return 0;
}
```
以上就是一个用C++编写的建造者模式的实现,希望能够对您有所帮助!
用c plus plus 写外观模式
外观模式是一种结构型设计模式,它提供了一个简单的接口,用于访问复杂系统中的一组接口。以下是使用 C++ 编写外观模式的示例代码:
```
class SubsystemA {
public:
void operationA() { // implementation }
};
class SubsystemB {
public:
void operationB() { // implementation }
};
class SubsystemC {
public:
void operationC() { // implementation }
};
class Facade {
public:
Facade() {
subsystemA_ = new SubsystemA();
subsystemB_ = new SubsystemB();
subsystemC_ = new SubsystemC();
}
~Facade() {
delete subsystemA_;
delete subsystemB_;
delete subsystemC_;
}
void operateAll() {
subsystemA_->operationA();
subsystemB_->operationB();
subsystemC_->operationC();
}
private:
SubsystemA* subsystemA_;
SubsystemB* subsystemB_;
SubsystemC* subsystemC_;
};
int main() {
Facade facade;
facade.operateAll();
return 0;
}
```
在此示例中,我们定义了三个子系统(Subsystems):SubsystemA、SubsystemB 和 SubsystemC,并将它们组合在一起以创建一个外观(Facade)。 Facade 提供了一个单一的操作 operateAll(),该操作会对所有子系统执行操作。这使得客户端代码(client code)可以使用更简单的方式来访问复杂系统的操作。