[设计模式]简单工厂模式

工厂类含有必要的判断逻辑,可以决定在什么时候使用哪种产品类的实例。

抽象产品类是所创建的所有对象的父类。

具体产品类是创建目标,继承自抽象产品类。

http://design-patterns.readthedocs.org/zh_CN/latest/creational_patterns/simple_factory.html

../_images/SimpleFactory.jpg


#include "Factory.h"
#include "ConcreteProductA"
#include "ConcreteProductB"

Product* Factory::createProduct(string proname) {
	if ('A' == proname) {
		return new ConcreteProductA();
	}
	else if('B' == proname) {
		return new ConcreteProductB();
	}
}


工厂模式的优点在于,当需要什么时,只需要传入一个正确的参数,就能获取你所需要的对象,且无须知道创建细节,参见上面的
createProduct()

工厂类的工厂方法往往是静态方法,可以通过类名直接调用。使用起来很方便。

简单工厂模式将对象的创建和对象本身的业务处理分离,降低了系统和耦合度,使两者修改起来都相对容易。

问题在于,工厂类职责过重,增加新的产品就需要修改相关逻辑,不符合软件开发的开闭原则(对扩展开放,对修改封闭)。且工厂类一旦不能工作,对整个系统都有影响。

简单工厂模式使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。

静态方法是该类的行为,与该类的对象无关

猜你喜欢

转载自blog.csdn.net/michellechouu/article/details/50717886
今日推荐