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

定义:
定义一个工厂类,它能够根据参数的不一样生成对应的类的实例;被建立的类的实例一般有相同的父类。由于该工厂方法尝尝是静态的,因此又被称为静态工厂方法(Static Factory Method)java

结构图:
git

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

注意:github

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

优势:3d

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

缺点:对象

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

适用场景:blog

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

实例:
继承

SimpleFactoryPattern.javaget

相关文章
相关标签/搜索