坦克大战游戏-工厂模式实现


需求:坦克大战

创建两种坦克

坦克类型 射程 速度
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;
}

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/88711422