abstractfacotry.h
来自「对设计模式中的factory, 代理等进行了实现。」· C头文件 代码 · 共 120 行
H
120 行
#ifndef ABSTRACT_FACOTRY_57563247_8E61_427f_A099_84C7DE3DE8AF_H
#define ABSTRACT_FACOTRY_57563247_8E61_427f_A099_84C7DE3DE8AF_H
#include <iostream>
class CConcreteFactory1;
class CConcreteFactory2;
class CProductA;
class CProductA1;
class CProductA2;
class CProductB;
class CProductB1;
class CProductB2;
void useAbstractFactory();
//===================FACTORY: interface====================
class CAbstractFactory
{
public:
CAbstractFactory(){}
static CAbstractFactory* GetFactory(int i);
//interface
virtual CProductA* CreateProductA();
virtual CProductB* CreateProductB();
};
class CConcreteFactory1 : public CAbstractFactory
{
public:
CConcreteFactory1():CAbstractFactory()
{
}
CProductA* CreateProductA();
CProductB* CreateProductB();
};
class CConcreteFactory2:public CAbstractFactory
{
public:
CConcreteFactory2():CAbstractFactory()
{
}
CProductA* CreateProductA();
CProductB* CreateProductB();
};
//=======================Product===================================
//product A
class CProductA
{
public:
CProductA()
{
}
};
class CProductA1:public CProductA
{
public:
CProductA1():CProductA()
{std::cout<<"A1\n";}
};
class CProductA2:public CProductA
{
public:
CProductA2():CProductA()
{std::cout<<"A2\n";}
};
//product A
class CProductB
{
public:
CProductB(){}
};
class CProductB1:public CProductB
{
public:
CProductB1():CProductB()
{
std::cout<<"B1\n";
}
};
class CProductB2:public CProductB
{
public:
CProductB2():CProductB()
{
std::cout<<"B2\n";
}
};
#endif//ABSTRACT_FACOTRY_57563247_8E61_427f_A099_84C7DE3DE8AF_H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?