简单工厂模式

属于创建类型模式

简介

简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类or接口.

结构

  1. Factory(工厂角色):
    负责创建实例,提供静态工厂方法,返回抽象产品类型.

  2. Product(抽象产品):
    是创建的实例的父类,负责定义具体产品类型的公共外部接口.

  3. ConcreteProduct(具体产品):
    工厂模式的创建目标.

Java代码实现

优点

  1. 对象的创建职责与业务使用对象职责分离,使修改对象或业务时不用修改另一方的代码

  2. 客户端无须知道所创建的具体产品类的类名,只需要知道具体产品类所对应的参数即可,对于一些复杂的类名,通过简单工厂模式可以减少使用者的记忆量.

  3. 通过引入配置文件,可以在不修改任何客户端代码的情况下更换和增加新的具体产品类,在一定程度上提高了系统的灵活性

  4. 防止用来实例化一个类的数据和代码在多个类中到处都是,可以将有关创建的知识搬移到一个工厂类中

  5. 可以提供一系列名字完全不同的工厂方法,每一个工厂方法对应类的一个构造函数,降低客户端调用同一类的不同构造方法出错概率.

缺点

(1) 由于工厂类集中了所有产品的创建逻辑,职责过重,一旦不能正常工作,整个系统都要受到影响。

(2) 使用简单工厂模式势必会增加系统中类的个数(引入了新的工厂类),增加了系统的复杂度和理解难度。

(3) 系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

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

适用情景

  1. 工厂类负责创建的对象比较少,由于创建的对象较少,不会造成工厂方法中的业务逻辑太过复杂.

  2. 客户端只知道传入工厂类的参数,对于如何创建对象并不关心.