c++设计模式之工厂模式

 
#include "stdafx.h"
#include <iostream>

using namespace std;

class BMW
{
public:
	virtual void SetCorlor(char * corlor) = 0;
	virtual void SetEngine(char * corlor) = 0;
	virtual void Drive() = 0;
};

class BMW523 : public BMW
{
public:
	void SetCorlor(char * corlor)
	{
		cout << " 喷漆  " << corlor << "完成 "<< endl;
	}
	void SetEngine(char * engine)
	{
		cout << " 发动机  " << engine << "安装完成 " << endl;
	}
	void Drive()
	{
		cout << "BMW523 Driving " << endl;
	}
};

class BMW320 : public BMW
{
public:
	void SetCorlor(char * corlor)
	{
		cout << " 喷漆  " << corlor << "完成 " << endl;
	}
	void SetEngine(char * engine)
	{
		cout << " 发动机  " << engine << "安装完成 " << endl;
	}
	void Drive()
	{
		cout << "BMW320 Driving " << endl;
	}
};

class Aircondition
{
public:
	virtual void Install() = 0;
};

class Aircondition320 : public Aircondition
{
public:
	void Install() 
	{
		cout << "Aircondition320 Install " << endl;
	}
};

class Aircondition523 : public Aircondition
{
public:
	void Install()
	{
		cout << "Aircondition523 Install " << endl;
	}
};

class FactoryBMW
{
public:
	virtual BMW* CreateBMW() = 0;
	virtual Aircondition* CreateAircondition() = 0;
};

class FactoryBMW320 :public FactoryBMW
{
public:
	BMW* CreateBMW()
	{
		BMW* pBMW = new BMW320;
		pBMW->SetCorlor("红色");
		pBMW->SetEngine("宝马发动机");
		return pBMW;
	}
	Aircondition320* CreateAircondition()
	{
		return  new Aircondition320;
	}
};

class FactoryBMW523 :public FactoryBMW
{
public:
	BMW* CreateBMW()
	{
		BMW* pBMW = new BMW523;
		pBMW->SetCorlor("黑色");
		pBMW->SetEngine("高等宝马发动机");
		return pBMW;
	}
	Aircondition *CreateAircondition()
	{
		return  new Aircondition523;
	}
};
int main()
{
	FactoryBMW320 *pFactoryBMW320 = new FactoryBMW320();
	BMW * pBMW320 = pFactoryBMW320->CreateBMW();
	pBMW320->Drive();

	FactoryBMW* pFactoryBMW523 = new FactoryBMW523;
	BMW * pBMW523 = pFactoryBMW523->CreateBMW();
	pBMW523->Drive();
	return 0;
}

#include "stdafx.h"
#include <iostream>

using namespace std;

class Car
{
public:
	void SetColor(char *color)
	{
		cout << " 喷漆 :"<< color << endl;
	}
	void SetEngine(char *engine)
	{
		cout << "发送机安装:"<< engine << endl;
	}
	void SetAirconddition(char *Airconddition)
	{
		cout << "空调安装: "<< Airconddition << endl;
	}
	void CarDrive()
	{
		cout << "Car moveing" << endl;
	}
};

class Factory
{
public:
	Car *CreateCar()
	{
		Car *pCar = new Car;
		pCar->SetColor("红色");
		pCar->SetEngine("法拉利");
		pCar->SetAirconddition("格力");
		pCar->CarDrive();
		return pCar;
	}

};


int main()
{
	Factory * pfactory = new Factory;
	pfactory->CreateCar();
	return 0;
}
#include "stdafx.h"
#include <iostream>

using namespace std;

class Car
{
public:
	void SetColor(char *color)
	{
		cout << " 喷漆 :"<< color << endl;
	}
	void SetEngine(char *engine)
	{
		cout << "发送机安装:"<< engine << endl;
	}
	void SetAirconddition(char *Airconddition)
	{
		cout << "空调安装: "<< Airconddition << endl;
	}
	void CarDrive()
	{
		cout << "Car moveing" << endl;
	}
};

class Factory
{
public:
	Car *CreateCar()
	{
		Car *pCar = new Car;
		pCar->SetColor("红色");
		pCar->SetEngine("法拉利");
		pCar->SetAirconddition("格力");
		return pCar;
	}

};


int main()
{
	Factory * pfactory = new Factory;
	Car *car = pfactory->CreateCar();
	car->CarDrive();
	return 0;
}
#include "stdafx.h"
#include <iostream>

using namespace std;

class Car
{
public:
	void SetColor(char *color)
	{
		cout << " 喷漆 :"<< color << endl;
	}
	void SetEngine(char *engine)
	{
		cout << "发送机安装:"<< engine << endl;
	}
	void SetAirconddition(char *Airconddition)
	{
		cout << "空调安装: "<< Airconddition << endl;
	}
	void CarDrive()
	{
		cout << "Car moveing" << endl;
	}
};

class Factory
{
public:
	virtual Car* CreateCar() = 0;
};

class AFactoryMethon : public Factory
{
public:
	Car* CreateCar()
	{
		Car *pCar = new Car();
		pCar->SetColor("白色");
		pCar->SetEngine("宝马");
		pCar->SetAirconddition("格力");
		return pCar;
	}
};

class BFactoryMethon : public Factory
{
	public:
		Car* CreateCar()
		{
			Car *pCar = new Car();
			pCar->SetColor("黑色");
			pCar->SetEngine("奔驰");
			pCar->SetAirconddition("格力");
			return pCar;
		}
};


int main()
{
	Factory *pBAO = new AFactoryMethon;
	Car* pCarBao = pBAO->CreateCar();
	pCarBao->CarDrive();

	Factory *pBEN = new BFactoryMethon;
	Car* pCarBen = pBEN->CreateCar();
	pCarBen->CarDrive();
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值