📄 abstractfacotry.h
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -