下面是简单工厂模式
一、简单工厂模式简介(Bref Introduction)
简单工厂模式(Simple Factory Pattern)的优点是,工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖
二、解决的问题(What To Solve)
客户实例化对象时不需要关心该对象是由哪个子类实例化的。
三、
1、
class Implementor
{
public:
virtual void makeDoor() = 0;
virtual void makeWindow() = 0;
};
2、
class ConcreImplementorA:public Implementor
{
virtual void makeDoor()
{
std::cout << "make door with tone" << std::endl;
}
virtual void makeWindow()
{
std::cout << "make window with tone" << std::endl;
}
};
class ConcreImplementorB:public Implementor
{
virtual void makeDoor()
{
std::cout << "make door with tree" << std::endl;
}
virtual void makeWindow()
{
std::cout << "make window with tree" << std::endl;
}
};
3、
class ImplFactory
{
public:
static ImplFactory *getInstance()
{
if (_instance == 0)
{
_instance = new ImplFactory();
}
return _instance;
}
Implementor *getImplementor(int type)
{
if (type == 0)
{
return new ConcreImplementorA();
}
return new ConcreImplementorB();
}
private:
ImplFactory(){}
static ImplFactory *_instance;
};
4、Client
ImplFactory::getInstance()->getImplementor(_type);