软件设计实验4
实验4:抽象工厂模式
[实验任务一]:人与肤色
源码:
#include<iostream>
using namespace std;
class Man;
class Woman;
class AbstractFactory{
public:
virtual Man* createMan() = 0;
virtual Woman* createWoman() = 0;
};
class Man
{
public:
virtual void maneat() = 0;
};
class Woman
{
public:
virtual void womaneat() = 0;
};
class YellowMan :public Man
{
public:
void maneat() {
cout << "Yellow man" << endl;
}
};
class YellowWoman :public Woman
{
public:
void womaneat() {
cout << "Yellow woman" << endl;
}
};
class BlackMan :public Man
{
public:
void maneat() {
cout << "Black man" << endl;
}
};
class BlackWoman :public Woman
{
public:
void womaneat() {
cout << "Black woman" << endl;
}
};
class WhiteMan :public Man
{
public:
void maneat() {
cout << "white man" << endl;
}
};
class WhiteWoman :public Woman
{
public:
void womaneat() {
cout << "white woman" << endl;
}
};
class YellowHumanFactory :public AbstractFactory
{
public:
YellowMan* createMan(){
return new YellowMan();
}
YellowWoman* createWoman(){
return new YellowWoman();
}
};
class BlackHumanFactory :public AbstractFactory
{
public:
BlackMan* createMan(){
return new BlackMan();
}
BlackWoman* createWoman(){
return new BlackWoman();
}
};
class WhiteHumanFactory :public AbstractFactory
{
public:
WhiteMan* createMan(){
return new WhiteMan();
}
WhiteWoman* createWoman(){
return new WhiteWoman();
}
};
class Client
{
public:
AbstractFactory* abstractFactory;
Man* man;
Woman* woman;
void excute(){
for (int i = 0; i < 3; i++)
{
if (i==0)
abstractFactory = new YellowHumanFactory();
else if (i==1)
abstractFactory = new WhiteHumanFactory();
else
abstractFactory = new BlackHumanFactory();
man = abstractFactory->createMan();
woman = abstractFactory->createWoman();
man->maneat();
woman->womaneat();
}
}
};
class _TCHAR;
int _tmain(int argc, _TCHAR* argv[])
{
Client* client = new Client();
client->excute();
system("pause");
return 0;
}
浙公网安备 33010602011771号