六个创建模式之简单工厂模式(Simple Factory Pattern)

定义:
定义一个工厂类,它可以根据参数的不同生成对应的类的实例;被创建的类的实例通常有相同的父类。因为该工厂方法尝尝是静态的,所以又被称为静态工厂方法(Static Factory Method)

结构图:

  • Factory:工厂类,工厂模式的核心。负责创建所有产品实例的内部逻辑,被外界直接调用,返回抽象类Product.
  • Product:抽象产品类,封装了各种产品的公有方法,利于提高系统的可扩展性。
  • ConcreteProduct:具体产品类,工厂创建目标。继承或实现了抽象产品类的抽象方法,含有具体产品功能的执行逻辑。

注意:

  • 传统情况下客户端会直接调用工厂类的静态方法,并指定对应的参数。如果需要更改对应的产品,则需要重新变音。因此可以考虑引入配置文件来指定具体产品类。
  • 有时为了简化,可以将抽象产品类和工厂类合并,在抽象产品类中实现静态工厂方法。

优点:

  • 工厂类将对象的创建和使用分类开来,符合了单一职责原则。
  • 客户端无序知道具体产品的类名,只需要知道具体产品类对应的参数即可,隐藏了具体产品创建的细节。
  • 通过配置文件,可以在不修改客户端代码的情况下更换和增加新的具体产品类。

缺点:

  • 工厂类集中了所有的具体产品创建的职责,一旦不能使用,整个系统将无法使用。
  • 如果添加新类,则需要修改工厂类,当产品类型多时,不利于整个系统的扩展和维护。
  • 使用了静态方法,造成工厂角色无法形成基于继承的等级结构。

适用场景:

  • 具体产品类的数目比较少,创建逻辑比较简单。
  • 客户端只需要知道传入工厂的参数,对于如何创建对象并不关心。

实例:

SimpleFactoryPattern.java

posted on 2016-10-24 16:16  云破天蓝  阅读(275)  评论(0编辑  收藏  举报

导航