本文用来记录工厂模式中,简单工厂、工厂方法和抽象工厂。

一、前置知识

image-20210710144613164

上图中,每个功能可以看成一个模块,每个模块要想能正常、更好的使用,一定也会依赖其他的模块,所以需要满足:

  • 每个模块负责自己的职责(单一职责),各个模块之间通过接口隔离原则对外暴露功能的使用(接口隔离原则)。
  • 每个模块都应该”承诺”自己对外暴露的接口是不变的。当模块内部发生变化时,其他模块是不需要知道的。这便是依赖于抽象而不依赖于实现(依赖倒置原则)
  • 上层模块只需要知道下层模块暴露出的接口即可,至于实现细节不需要也不应该知道。(迪米特法则)

为了对下面的实例代码进行演示,先明确两个概念:

  1. 产品:对应着类。
  2. 抽象产品:抽象类或接口

需求:

设计一个食物的项目,便于食物种类的扩展,且便于维护。

  1. 食物存在各种各样的种类
  2. 客户端可以对其进行扩展自己所需要的食物。