设计模式总结之工厂模式

669 阅读2分钟

前言

这个模式总结的有很多,但是绝大都讲的比较官方,而且很多复制粘贴,比较难懂,这里我用自己的话总结一遍。

正文

简单工厂模式

简单工厂模式不属于设计模式,这里不做讨论。

工厂方法模式

一种创建型设计模式

举一个简单明了的例子:

  1. 现在我们公司开展了一个运输的业务,将物品从国内的一个城市,用汽车运输到另一个城市。 注意点:这里的业务只涉及到运输,不做其他任何事情。

  2. 随著我们的生意越做越大,很多公司联系我们,让我们开展海外运输的业务,即用轮船将物品运输到海外城市。 注意点:这里业务功能还是运输,但是使用了其他的工具轮船。

类图

解释

工厂方法模式不关心使用何种工具,具体交由子类去实现(所有工厂模式都是交由子类去实现),只需要关心如何进行运输操作。

总结

通常基于一种工厂方法,针对于一种产品的,专注于做一件事情的称为工厂方法模式。

抽象工厂模式

一种创建型设计模式

举一个简单明了的例子:

接着上面的例子说:

  1. 由于我们公司库存的笔记本较多,领导希望在运输的基础上加上了销售笔记本,需要一边运输,一边销售笔记本。 注意点:这里的业务变多,需要同时做两件事了。

类图

解释

一个工厂负责多个产品的种类

总结

抽象工厂模式中一个工厂负责多个产品种类,通常有多种工厂方法,是工厂方法模式的升级。

总结

  1. 抽象工厂和工厂方法模式不局限于是其root父类是用的接口还是抽象类。
  2. 工厂方法模式针对的是一种工厂方法,工厂职责明确且单一。
  3. 抽象工厂模式针对的是多种工厂方法,工厂负责多个产品种类。
  4. 如果你的程序中并不涉及产品系列的话, 那就不需要抽象工厂。