需求:坦克大战
创建两种坦克
坦克类型 | 射程 | 速度 |
b70 | 70米 | 时/70公里 |
b50 | 50米 | 时/70公里 |
如下类图设计
如下编码
#include <iostream>
#include <string>
using namespace std;
class Function{
public:
string mFunction;
Function(string str){
mFunction = str;
}
void exe(){
cout<<mFunction<<"\n";
}
};
//抽象层
class AbstractTank{
public:
virtual void fun()=0;
};
class AbstractFactory{
public:
virtual AbstractTank& create()=0;
};
//实施层
class B70Tank: public AbstractTank{
public:
virtual void fun(){
Function function("B70Tank");
function.exe();
}
};
class B50Tank: public AbstractTank{
public:
virtual void fun(){
Function function("B50Tank");
function.exe();
}
};
class B70Factory:public AbstractFactory{
public:
virtual AbstractTank& create(){
return *(new B70Tank());
}
};
class B50Factory:public AbstractFactory{
public:
virtual AbstractTank& create(){
return *(new B50Tank());
}
};
// 客户端
class Client{
public:
static void main(){
B70Factory b70;
AbstractFactory& f = b70;
AbstractTank& t = f.create();
t.fun();
}
};
//客户端调用
int main()
{
Function function("建造者模式演示");
function.exe();
Client::main();
//看代码不用考虑以下内容
int cin_a;
cin>>cin_a;
return 0;
}