示例:
image.png

功能

  • 选择一个类
  • 创建该类的对象
  • 以超类的类型返回该对象
  • 不做任何其它事情

    优点

  • 清洗客户程序

  • 隐藏初始对象的繁杂的细节
  • 客户类只知道哪种类型的对象被创建了,而不必知道哪个具体的子类被初始化了;客户类只知道父类类型

两种不同的工厂方法模式

  • 简单工厂方法模式
  • 工厂方法模式

    简单方法模式

    image.png

    优点

  • 一些逻辑被放在了工厂类里面

  • 客户类不用自己创建对象
  • 责任分离

    缺点

    添加Product子类比较困难

    工厂方法

    image.png
    image.png
    一个创建一个,一一对应

    何时使用工厂方法模式

  • 大量条件语句

  • 创建对象的任务分散在客户类的子类中,比较乱;可使用工厂方法模式将创建产品类的子类对象的责任分离出来

    两种模式比较

  1. 中心不同
  2. 工厂方法不同,一个静态,一个动态
  3. 工厂方法模式的可扩展性
  4. 两个工厂方法返回类型都是超类类型
  5. 工厂方法模式支持开闭原则,但是简单工厂方法模式不支持开闭原则