#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string.h>
using namespace std;
class House {
public:
void setDoor(string m_door)
{
this->m_door = m_door;
}
string getDoor()
{
return m_door;
}
void setWall(string m_wall)
{
this->m_wall = m_wall;
}
string getWall()
{
return m_wall;
}
void setWindows(string m_windows)
{
this->m_windows = m_windows;
}
string getWindows()
{
return m_windows;
}
private :
string m_door;
string m_wall;
string m_windows;
};
class Bulider {
public:
virtual void buildDoor() = 0;
virtual void buildWall() = 0;
virtual void buildWindows() = 0;
virtual House* getHose() = 0;
};
//公寓
class FlatBuilder : public Bulider {
public:
FlatBuilder() {
house = new House();
}
virtual void buildDoor() {
house->setDoor("flat door");
}
virtual void buildWall()
{
house->setWall("flat wall");
}
virtual void buildWindows()
{
house->setWindows("flat windows");
}
virtual House* getHose()
{
return house;
}
private:
House *house;
};
//设计者
class Director {
public:
Director(Bulider * m_build) {
this->m_build = m_build;
}
void Construct()
{
m_build->buildDoor();
m_build->buildWall();
m_build->buildWindows();
}
private:
Bulider * m_build;
};
int main(void)
{
Bulider * flat = new FlatBuilder();
Director *dir = new Director(flat);
dir->Construct();
House *house = flat->getHose();
system("pause");
return EXIT_SUCCESS;
}
c++设计模式之建造者模式
最新推荐文章于 2023-01-06 13:46:24 发布