角色:用户,工厂,产品.
目的是使得用户将产品的消费和生产分开.在编程中就是将类的创建和使用分开.从而达到责任分离,其实这也是所有创建模式的目的之一.做法是工厂类根据用户的要求(参数)来返回不同的类的实例.
工厂实现:采用参数化的静态方法为用户提供类实例的创建,如下所示:
public static ProductType FactoryMethod(参数)
{
根据参数返回需要类的实例.
}
简单工厂有几种情况:
1.产品只有一种,这种情况下方法没必要带参数.
2.产品有多种,且属于同类型产品,则可以加入抽象产品.加入抽象产品的一个潜在好处是可以让用户可以不关心具体的产品,在设计和实现上可以做到一定程度上的延后联编.
3.产品有多种,且类型各异,则可以考虑采用其它模式或者提供多个工厂方法来实现.但不鼓励采用后者来实现(做事要专业).
4.在实际应用中产品角色,工厂角色以及用户角色都可以根据实际情况合并.(模式变形)
简单工厂模式的理解:
1.如果产品创建的时候需要用户提供指导,则简单工厂模式不适合,如果要适用就会使得工厂方法的参数过于复杂,因此本模式只适合用户不关心产品构造逻辑,只关心使用的情况下(不关心构建,只关心使用).
2.大多数情况下用户还是必须知道产品的具体细节,没有减少对细节的依赖(特殊情况,有抽象产品的情况下,在某些应用中可以减少对具体产品的细节依赖).
3.采用静态方法实现类的创建,好处是可以减少工厂类本身的创建,但缺点是失去了工厂类进行继承扩展的优点.
4.简单工厂模式的好处是实现了责任分离,对用户来讲同时也隐藏了构建产品的细节,而且实现起来比较简单.
5.增加产品的时候,工厂类需要修改,也违背了面向对象的开放封闭原则.
6.只适合产品类比较少的情况,如果产品类太多,会使得静态工厂方法过于庞大.
但现在有一种比较简单的办法,就是采用反射或者泛型来规避静态方法过多而使得工厂类庞大的问题.
分享到:
相关推荐
java设计模式----抽象工厂模式,简单工厂模式代码 代码内部
c++设计模式-创建型模式-工厂方法模式-最简单的源码-qt工程
JAVA设计模式例程-工厂模式-的例程,看完以后基本上能对JAVA上实现简单工厂能有所了解,简单工厂还是比较容易滴,而且也是较为常用的一种设计模式。
设计模式UML图--工厂模式: 包含了简单工厂、工厂方法、抽象工厂方法三个工厂模式的UML
设计模式-工厂模式 学习练习的代码 1.简单工厂模式 2.方法工厂模式 3.抽象工厂模式 4.模拟Spring Bean工厂练习
北风网-设计模式-简单工厂模式ppt 带程序
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是抽象工厂模式及应用场景和应用场景的代码事例。及各工厂模式的区别。
自己便携的工厂设计模式,示例中的代码绝对没有使用伪代码,是开发的项目真实案例,简单易懂
设计模式练习-简单工厂-JAVA简单工厂练习示例。
设计模式-简单工厂模式-披萨店C#语言版 如有学习讨论意向请联系我吧~ hzher@qq.com
NULL 博文链接:https://zhaoxiaogang.iteye.com/blog/807921
JAVA设计模式(01):创建型-工厂模式【简单工厂模式】(Simple Factory)
设计模式学习笔记(一)--简单工厂模式源码和类图
设计模式第四章简单工厂模式一个小例题,类图+简单代码
java设计模式-创建者模式-简单工厂模式。详细的讲解了什么是简单工长模式及应用场景和应用场景的代码事例。
C++设计模式-创建型模式-简单工厂模式源码
运用到的设计模式有备忘录模式,迭代器模式,简单工厂模式,状态模式,模版方法模式,单例模式。 资源包含项目文件(eclipse)以及系统说明(docx文件),系统说明中说明了为什么要使用该模式,使用该模式有什么好处...
简单工厂模式示例 有注释 需要的朋友可以下载研究 很简单很基础的一个设计模式