每日博客

抽象工厂模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解抽象工厂模式的动机,掌握该模式的结构;

2、能够利用抽象工厂模式解决实际问题。

 

 

[实验任务一]:人与肤色

使用抽象工厂模式,完成下述产品等级结构:

 

 C++版

#include <iostream>
#include <string>
using namespace std;

class Man{public: virtual void show()=0;};
class Mone:public Man{public: void show(){cout<<"白皮肤男人"<<endl;}};
class Mtwo:public Man{public: void show(){cout<<"黑皮肤男人"<<endl;}};
class Mthr:public Man{public: void show(){cout<<"黄皮肤男人"<<endl;}};
class Woman{public: virtual void show()=0;};
class Wone:public Woman{public: void show(){cout<<"白皮肤女人"<<endl;}};
class Wtwo:public Woman{public: void show(){cout<<"黑皮肤女人"<<endl;}};
class Wthr:public Woman{public: void show(){cout<<"黄皮肤女人"<<endl;}};
class Factory
{
public:
virtual Man*creat1()=0;
virtual Woman*creat2()=0;
};
class Fone:public Factory
{
public:
virtual Man*creat1(){return new Mone();};
virtual Woman*creat2(){return new Wone();};
};
class Ftwo:public Factory
{
public:
virtual Man*creat1(){return new Mtwo();};
virtual Woman*creat2(){return new Wtwo();};
};
class Fthr:public Factory
{
public:
virtual Man*creat1(){return new Mthr();};
virtual Woman*creat2(){return new Wthr();};
};
main()
{
Factory*a=new Fone();
Man*m1=a->creat1();
m1->show();
Woman*w1=a->creat2();
w1->show();
Factory*b=new Ftwo();
Man*m2=b->creat1();
m2->show();
Woman*w2=b->creat2();
w2->show();
Factory*c=new Fthr();
Man*m3=c->creat1();
m3->show();
Woman*w3=c->creat2();
w3->show();
}

posted @ 2021-11-15 21:02  谦寻  阅读(85)  评论(0编辑  收藏  举报