您的位置:首页 > 其它

设计模式3:抽象工厂

2009-01-18 18:54 337 查看
看看抽象工厂 感觉迷迷糊糊的 上上网 看看例子

随便写写 也不知道自己写的是不是一个抽象工厂的例子 嘿嘿

如下:
#include <iostream>

using namespace std;

class person
{
public:
virtual void eat(){cout<<"人吃饭"<<endl;}
virtual void jump(){cout<<"人跳"<<endl;}
virtual void sleep(){cout<<"人睡觉"<<endl;}
};

class disan: public person
{
public:
void eat(){cout<<"李三吃饭"<<endl;}
void jump(){cout<<"李三跳"<<endl;}
void sleep(){cout<<"李三睡觉"<<endl;}
};

class wangsi: public person
{
public:
void eat(){cout<<"王四吃饭"<<endl;}
void jump(){cout<<"王四跳"<<endl;}
void sleep(){cout<<"王四睡觉"<<endl;}
};

class beast
{
public:
virtual void eat(){cout<<"兽吃饭"<<endl;}
virtual void jump(){cout<<"兽跳"<<endl;}
virtual void sleep(){cout<<"兽睡觉"<<endl;}
};

class ox:public beast
{
public:
void eat(){cout<<"兽吃饭"<<endl;}
void jump(){cout<<"兽跳"<<endl;}
void sleep(){cout<<"兽睡觉"<<endl;}
};

class dog:public beast
{
public:
void eat(){cout<<"狗吃饭"<<endl;}
void jump(){cout<<"狗跳"<<endl;}
void sleep(){cout<<"狗睡觉"<<endl;}
};

class fact
{
public:
virtual person* createperson()=0;
virtual beast* createBeast()=0;
};

class a: public fact
{
public:
person*  createperson(){return new disan();}
beast*  createBeast(){return new dog();}
};

class b: public fact
{
public:
person*  createperson(){return new wangsi();}
beast*  createBeast(){return new ox();}
};

int main()
{
fact* p = new a;
person* c = p->createperson();
c->eat();
beast* x = p->createBeast();
x->sleep();
fact *xa = new b;
person* d = xa->createperson();
d->jump();
beast* cc = xa->createBeast();
cc->eat();
delete p;
delete c;
delete x;
delete d;
delete cc;
delete xa;
system("pause");
}
dev c++编程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: