设计模式之Static Factory模式(简单工厂模式)

原创 2016年06月02日 10:42:35

简单工厂模式并不是GOF提出的23种设计模式中的一种。工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品。

适用场合
1.在程序中,需要创建的对象很多,导致对象的new操作多且杂时,需要使用简单工厂模式;
2.由于对象的创建过程是我们不需要去关心的,而我们注重的是对象的实际操作,所以,我们需要分离对象的创建和操作两部分,如此,方便后期的程序扩展和维护。

1.定义抽象类,也就是接口

class Product
{
public:
	virtual void show()=0;
};
2.定义需要具体实现类,继承抽象类,假设有三个产品

class ProductA:public Product
{
public:
	virtual void show()
	{
		printf("ProductA\n");
	}
};

class ProductB:public Product
{
public:
	virtual void show()
	{
		printf("ProductB\n");
	}
};

class ProductC:public Product
{
public:
	virtual void show()
	{
		printf("ProductC\n");
	}
};
3.定义工厂类,负责生产产品,这里传入具体的参数来决定生产那个产品

class Factory
{
public:
	Product* CreateProduct(int num)
	{
		switch(num)   //通过传参实例化对象
		{
		case 1:
			return new ProductA();
			break;
		case 2:
			return new ProductB();
			break;
		case 3:
			return new ProductC();
			break;
		default:
			return NULL;
			break;
		}
	}
};
4.实际调用

int main()
{
	Factory* ProductFactory=new Factory();       //首先定有一个工厂对象
	Product* A=ProductFactory->CreateProduct(1); //利用多态与工厂对象来传参决定生产那个产品
	A->show();
	Product* B=ProductFactory->CreateProduct(2);
	B->show();
	Product* C=ProductFactory->CreateProduct(3);
	C->show();
}





版权声明:本文为博主原创文章,未经博主允许不得转载。

设计模式 - 简单工厂模式/静态工厂模式(Static Factory Method) C++实现

简单工厂模式 简单工厂模式又叫静态工厂方法,不属于23种GOF模式之一。 适用场景:在程序的各个地方都需要new一些常用的对象,并且对new的对象要进行一些初始化,new操作散落在程序的各个地方,不便...
  • zhaosdfa
  • zhaosdfa
  • 2015年04月21日 15:36
  • 485

Spring学习笔记 使用Static Factory(静态工厂类)创建Bean

普通定义Bean并且进行初始化的方法一般通过property(属性)的setter方法或者构造方法进行。例如 这种定义创建Bean相当于使用new  com.cs...
  • arvinrong
  • arvinrong
  • 2012年07月11日 00:51
  • 8365

Java静态工厂方法 —— 有了它,你还需要工厂模式吗

本文结合《Effective Java》第一章第一条目《考虑用静态工厂方法代替构造器》和自己的理解及实践,讲解了Java静态工厂方法的知识点,并在文末附上了自己对静态工厂方法和工厂模式的区别的理解,文...
  • hzy38324
  • hzy38324
  • 2017年05月28日 10:41
  • 2126

设计模式之Static Factory模式(简单工厂模式)

简单工厂模式并不是GOF提出的23种设计模式中的一种。工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品。 适用场合 1.在程序中,需要创建的对象很多,导致对...
  • pengshupan
  • pengshupan
  • 2016年06月02日 10:42
  • 307

设计模式(一)--静态工厂模式

静态工厂模式(static factory)也叫简单工厂模式。 涉及到3个角色:工厂类角色,抽象产品类角色和具体产品类角色。 抽象产品类可以使用接口或者父类来描述产品对象的行为特征。 具体产品类...
  • lushuaiyin
  • lushuaiyin
  • 2013年05月12日 16:38
  • 1766

Java设计模式之工厂方法模式【Factory Method Pattern】

工厂方法模式(FACTORY METHOD)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的...
  • Lixuanshengchao
  • Lixuanshengchao
  • 2016年05月04日 21:27
  • 978

设计模式——简单工厂(又叫静态工厂方法,不属于GOF23中设计模式)

简单工厂模式属于类的创新型模式,又叫静态工厂方法模式,是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 —————————————————————————————————...
  • sunqingzhong44
  • sunqingzhong44
  • 2016年07月01日 10:01
  • 242

动态的工厂模式

工厂模式可以说是我们应用得最广泛的设计模式之一。所谓工厂模式,就是不是由客户类来实现类的实例,而是由工厂来实现类的实例。如没有应用工厂模式的客户类Client要实现对接口类Parent和他的实现类So...
  • hivon
  • hivon
  • 2005年04月10日 23:01
  • 5518

静态工厂模式 理解

设想,Apple和Grape都有相同的say()方法,但由于它们并没有共同的商业逻辑,这时该怎么办? 设想,要在SinaWeibo和TencentWeibo之间打通数据的获取方法,如getId()、g...
  • itzyjr
  • itzyjr
  • 2013年10月30日 00:49
  • 2190

Android设计模式之一个例子让你彻底明白工厂模式(Factory Pattern)

提出疑问这几天研究工厂模式的时候,看到网上的一些文章中举的例子我就很疑惑,我相信这也是许多人的疑惑:工厂模式的功能就是创建实例,我们创建实例直接new不就完了吗,干嘛还得再封装一层工厂类,然后用工厂类...
  • nugongahou110
  • nugongahou110
  • 2015年12月29日 13:36
  • 6240
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式之Static Factory模式(简单工厂模式)
举报原因:
原因补充:

(最多只允许输入30个字)