简单工厂模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解简单工厂模式的动机,掌握该模式的结构;
2、能够利用简单工厂模式解决实际问题。
[实验任务一]:女娲造人
使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。
C++版
#include <iostream>
#include <string>
using namespace std;
class Person{
protected:string sex;
public:
virtual void setsex(){};
virtual string getsex(){return sex;}
};
class Man:public Person
{
public:
virtual void setsex(){sex="男人";}
virtual string getset(){return sex;}
};
class Woman:public Person
{
public:
virtual void setsex(){sex="女人";}
virtual string getsex(){return sex;}
};
class Robot:public Person
{
public:
virtual void setsex(){sex="机器人";}
virtual string getsex(){return sex;}
};
class Factory
{
public:
static Person*produce(char c)
{
switch(c)
{
case 'M':
{
Person*pro=new Man();
break;
}
case 'W':
{
Person*pro=new Woman();
break;
}
case 'R':
{
Person*pro=new Robot();
break;
}
}
}
};
main()
{
Person*pro1;
pro1=Factory::produce('M');
pro1->setsex();
string result1=pro1->getsex();
cout<<"女娲造"<<result1<<endl;
Person*pro2;
pro2=Factory::produce('W');
pro2->setsex();
string result2=pro2->getsex();
cout<<"女娲造"<<result2<<endl;
Person*pro3;
pro3=Factory::produce('R');
pro3->setsex();
string result3=pro3->getsex();
cout<<"女娲造"<<result3<<endl;
}