简单工厂模式按照设计模式类型分的话是属于创建型模式,他是工厂模式中最简单的一种,他不属于GoF 23中设计模式之一,但是是简单实用的。他是有一个工厂对象来决定创建哪一种对象的实例。
实现比较简单,这里我只贴出类图和调用方法:
调用方法:
IProduct * simpleFactory::Create(std::string className)
{
if( className == "Ipad")
return new Ipad();
if(className == "IPhone")
return new IPhone();
}
优点:外界只要传入类的名字或者识别符即可,不需要关心具体创建过程,只顾“消费”就可以了。各有各的指责和权力,分工明确,利于整个软件架构优化。
缺点:违反里高内聚责任分配原则,将全部逻辑放到一个工厂类中,如果需要支持新的类,那就必须改变工厂类了。
这里只有一种工厂,一个系列的产品,那如果有多个系列的产品呢?问题如何解决?
应用场景:
1. 我的asp.net程序需要根据客户实际所用数据库来配置,那么我的程序支持所有的数据库,具体用到哪个,配置文件配置一下即可。这个C#/Java里的反射就可以实现。
2. MFC里的Seralize功能。
作者:LCL_data