• 章节目录
  • 工厂模式概述
    • 需要解决的问题
    • 工厂模式简要介绍
  • 简单工厂
    • 简单工厂的定义
    • 简单工厂的实现
    • 简单工厂的问题
  • 工厂方法
    • 工厂方法的定义
    • 依赖倒置原则
  • 抽象工厂
    • 抽象工厂的定义
    • 区别抽象工厂和工厂方法
    • 抽象工厂和工厂方法使用的时机
    • 抽象方法的实现说明
    • 组合使用抽象工厂和工厂方法
    • 单纯使用抽象工厂的弊端
    • 抽象工厂和工厂方法可以融合吗?
  • 工厂三大方法图解
    • 简单工厂的 Scala 实现
    • 工厂方法的 Scala 实现
    • 抽象工厂的 Scala 实现
简单工厂,工厂方法和抽象工厂模式 - 内容简介

本章介绍工厂模式。一般而言,创建对象时使用 new XXX() 这种调用具体类来创建,但是这不满足 “面向接口而不是具体实现编程”,因此将创建对象的代码单独封装起来,将变化和不变隔离开来,这就是工厂模式。工厂模式涉及两种情况,单独的创建一个具体对象,根据枚举或者字符串使用条件语句从一堆对象中选择创建一个具体对象。

所有的工厂都是用来封装对象的创建过程。大致分为三种,简单工厂,工厂方法和抽象工厂。对于简单工厂,其虽然不是设计模式,但是是一种将客户程序从具体类解耦的简单方法。简单工厂单纯的将对象初始化过程包装在一个类中,然后让服务类保存这个工厂类实例,通过构造器传入对象实例提供服务。

工厂方法使用继承,把对象的实现委托给子类,子类实现工厂方法来创建对象。这种方法更关心对于传递进来对象进行调用并且提供服务。工厂方法一般包含一个 abstract Object createObject(String args) 方法用来让子类实现工厂生产的对象。

抽象工厂可以看作是一个包含多个 abstract Object createObject(String args) 方法的 interface,其和工厂方法的区别在于,抽象工厂不提供服务和调用,常用来传递实例给某个类中的实例变量,即常用来粘合对象。

对于经典的设计模式,从类型设计到最终的程序,可以使用抽象工厂来粘合对象,使用工厂方法来提供差异化服务。工厂模式是践行依赖倒置的良好实践。Ps.依赖倒置指的是高层次和低层次组建都依赖相同的抽象。这看似是不可能的,但是,如果使用工厂模式创建对象并且进行传递,和原来提供服务的类解耦,对于原本的类来说则是可能的。

最后更新于 2019-02-08 查看笔记