定义
工厂类通过不同的参数返回不同的实例对象。
有三要素:工厂类,实例父类,和实例子类。
简单工厂模式简单来说就是通过参数创建对象的一种方式。
特点
1. 工厂类是一个单例
2. 实例对象继承同一个父类,通过一个虚函数去实现自己业务
3. 很好的体现了封装继承和多态,使业务代码逻辑松耦合。
缺点
工厂类集成了所有实例对象的逻辑,不宜扩展,负担过重,但是可以考虑通过配置文件优化。
场景
通过不同的参数来返回不同对象实现不同操作的逻辑。
示例代码
#include "stdafx.h"
#include "iostream"
//1.实例父类
class animal
{
public:
virtual void Breathe()
{
printf("动物会呼吸");
printf("\n");
}
};
//2. 子类
class bird:public animal
{
virtual void Breathe()
{
printf("鸟会呼吸");
printf("\n");
}
};
class fish :public animal
{
virtual void Breathe()
{
printf("鱼会呼吸");
printf("\n");
}
};
//3. 工厂类
class animalFactroy
{
public:
static animalFactroy * Instance()
{
static animalFactroy instance;
return &instance;
}
//冗余之处
animal * Getanimal( std::string name)
{
animal *animal1;
if(name == "鱼" )
{
animal1 = new fish();
}
else if (name == "鸟")
{
animal1 = new bird();
}
else
{
animal1 = new animal;
}
return animal1;
}
private:
animalFactroy()
{
printf("工厂类构造");
printf("\n");
};
};
int main()
{
animalFactroy::Instance()->Getanimal("鱼")->Breathe();
animalFactroy::Instance()->Getanimal("鸟")->Breathe();
animalFactroy::Instance()->Getanimal("111")->Breathe();
getchar();
return 0;
}
结果: