《研磨设计模式》读书笔记之:工厂方法模式、抽象工厂模式

前言:本篇系看完《研磨设计模式》一书的个人理解和总结,可能存在不正确的地方,看时需要持怀疑态度。另外,所有的图都是示意图,示意,示。

工厂方法模式(FactoryMethod):

《研磨设计模式》读书笔记之:工厂方法模式、抽象工厂模式_第1张图片

几点解释:

  1. 简单工厂是由客户端调用静态方法得到具体实现的一个引用;工厂方法模式中的工厂方法一般不提供给客户端使用,这也是图中声明为 protect 的原因,由具体的子类来实现工厂方法,返回一个具体对象的引用,这个工厂方法一般是由 抽象父类中的其他方法调用。
  2. 客户端一般是使用 SpecificB类的对象,调用其中的某些方法。
  3. 本质:延迟到子类选择具体的实现。
  4. 咋一看其实结构和模板方法模式很类似,但是区别还是很大的:工厂方法模式的子类的作用在于从诸多已有的实现中选择一个实现创建实例并返回,而模板方法模式的子类往往需要提供整体算法骨架中某个小步骤的结果。

抽象工厂模式(AbstractFactory):

《研磨设计模式》读书笔记之:工厂方法模式、抽象工厂模式_第2张图片

几点解释:

  1. 简单工厂、工厂方法模式基本上都是单个对象的创建,抽象工厂模式关注的是一系列相关对象(产品簇)的创建。
  2. 名为抽象工厂,实则在Java中的实现是 声明一个包含相关创建方法的接口
  3. 本质:选择一个产品簇的实现
  4. 抽象工厂如果只有一个抽象方法,其实就退化为工厂方法,而工厂方法如果不延迟到子类,直接创建实现,其实就退化为简单工厂

你可能感兴趣的:(设计模式)