设计模式1-简单工厂

定义

工厂类通过不同的参数返回不同的实例对象。

有三要素:工厂类,实例父类,和实例子类。

简单工厂模式简单来说就是通过参数创建对象的一种方式。

特点

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;
}

结果:

UML

发布了26 篇原创文章 · 获赞 7 · 访问量 893

猜你喜欢

转载自blog.csdn.net/qq_29067097/article/details/104183163