Java设计模式(二)简单工厂模式

Java设计模式(二)简单工厂模式
wshunli工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。
工厂模式可以分为三类:
1)简单工厂模式(Simple Factory)
2)工厂方法模式(Factory Method)
3)抽象工厂模式(Abstract Factory)
本文及主要介绍简单工厂模式。
简单工厂模式
简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。
在简单工厂模式中,可以根据参数的不同返回不同类的实例。
简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
简单工厂模式包含如下角色:
(1) Factory:工厂角色
工厂角色负责实现创建所有实例的内部逻辑。
(2) Product:抽象产品角色
抽象产品角色是所创建的所有对象的父类,负责描述所有实例所共有的 公共接口 。
(3) ConcreteProduct:具体产品角色
具体产品角色是创建目标,所有创建的对象都充当这个角色的某个具体类的实例。
1、创建抽象产品接口
public interface Shape { |
2、实现具体产品角色
public class Point implements Shape { |
3、工厂角色,生成基于给定信息的实体类的对象
public class ShapeFactory { |
4、使用该工厂,通过传递类型信息来获取实体类的对象
public class SimpleFactoryMain { |
简单工厂模式优缺点:
优点:
通过使用工厂类,外界不再需要关心如何创造各种具体的产品,只要提供一个产品的名称作为参数传给工厂,就可以直接得到一个想要的产品对象,并且可以按照接口规范来调用产品对象的所有功能(方法)。构造容易,逻辑简单。
缺点:
1、简单工厂模式中的 if else 判断非常多,当系统中的具体产品类不断增多时候,就要不断的修改工厂类,对系统的维护和扩展不利。
2、一个工厂类中集合了所有的类的实例创建逻辑,什么时候它不能工作了,整个系统都会受到影响。
3、简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。
适用场景:
1、工厂类负责创建的对象比较少:由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂。
2、客户端只知道传入工厂类的参数,对于如何创建对象不关心:客户端既不需要关心创建细节,甚至连类名都不需要记住,只需要知道类型所对应的参数。
本文实现源码:https://github.com/wshunli/design-patterns/tree/master/src/ch02
参考资料
1、工厂模式 | 菜鸟教程
http://www.runoob.com/design-pattern/factory-pattern.html
2、JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式) - CSDN博客
https://blog.csdn.net/jason0539/article/details/23020989
3、java中的工厂模式 - 简书
https://www.jianshu.com/p/bf8341c75304







