抽象工厂模式
我用#CSDN#这个app发现了有技术含量的博客,小伙伴们求同去《抽象工厂模式(通俗易懂)》, 一起来围观吧 https://blog.csdn.net/qq_33732195/article/details/110101808?utm_source=app&app_version=4.5.3
C++实例如下:
#include <iostream>
using namespace std;
class IPhone
{
public:
virtual void call()=0;
virtual void sendmsg()=0;
};
class IRouter
{
public:
virtual void tranfer()=0;
virtual void separate()=0;
};
class HuaweiPhone:public IPhone
{
public:
void call(){cout << "华为打电话" << endl;}
void sendmsg(){cout << "华为发消息" << endl;}
};
class HuaweiRouter:public IRouter
{
public:
void tranfer(){cout << "华为路由器转发" << endl;}
void separate(){cout << "华为路由器隔离" << endl;}
};
class ApplePhone:public IPhone
{
public:
void call(){cout << "苹果打电话" << endl;}
void sendmsg(){cout << "苹果发消息" << endl;}
};
class AppleRouter:public IRouter
{
public:
void tranfer(){cout << "苹果路由器转发" << endl;}
void separate(){cout << "苹果路由器隔离" << endl;}
};
class IFactory
{
public:
virtual IPhone* PhoneFactory()=0;
virtual IRouter* RouteFactory()=0;
};
class AppleFactory:public IFactory
{
public:
IPhone* PhoneFactory(){return new ApplePhone();}
IRouter* RouteFactory(){return new AppleRouter();}
};
class HuaweiFactory:public IFactory
{
public:
IPhone* PhoneFactory(){return new HuaweiPhone();}
IRouter* RouteFactory(){return new HuaweiRouter();}
};
class CreateFactory
{
public:
IFactory* createAppleFactory(){return new AppleFactory();}
IFactory* createHuaweiFactory(){return new HuaweiFactory();}
};
int main()
{
CreateFactory cf;
IPhone *a = cf.createAppleFactory()->PhoneFactory();
a->call();
a->sendmsg();
a=cf.createHuaweiFactory()->PhoneFactory();
a->call();
a->sendmsg();
IRouter *b = cf.createAppleFactory()->RouteFactory();
b->tranfer();
b->separate();
b=cf.createHuaweiFactory()->RouteFactory();
b->tranfer();
b->separate();
}