前言
这个模式总结的有很多,但是绝大都讲的比较官方,而且很多复制粘贴,比较难懂,这里我用自己的话总结一遍。
正文
简单工厂模式
简单工厂模式不属于设计模式,这里不做讨论。
工厂方法模式
一种创建型设计模式
举一个简单明了的例子:
-
现在我们公司开展了一个运输的业务,将物品从国内的一个城市,用汽车运输到另一个城市。
注意点:这里的业务只涉及到运输,不做其他任何事情。 -
随著我们的生意越做越大,很多公司联系我们,让我们开展海外运输的业务,即用轮船将物品运输到海外城市。
注意点:这里业务功能还是运输,但是使用了其他的工具轮船。
类图
解释
工厂方法模式不关心使用何种工具,具体交由子类去实现(所有工厂模式都是交由子类去实现),只需要关心如何进行运输操作。
总结
通常基于一种工厂方法,针对于一种产品的,专注于做一件事情的称为工厂方法模式。
抽象工厂模式
一种创建型设计模式
举一个简单明了的例子:
接着上面的例子说:
- 由于我们公司库存的笔记本较多,领导希望在运输的基础上加上了销售笔记本,需要一边运输,一边销售笔记本。
注意点:这里的业务变多,需要同时做两件事了。
类图
解释
一个工厂负责多个产品的种类
总结
抽象工厂模式中一个工厂负责多个产品种类,通常有多种工厂方法,是工厂方法模式的升级。
总结
- 抽象工厂和工厂方法模式不局限于是其root父类是用的接口还是抽象类。
- 工厂方法模式针对的是一种工厂方法,工厂职责明确且单一。
- 抽象工厂模式针对的是多种工厂方法,工厂负责多个产品种类。
- 如果你的程序中并不涉及产品系列的话, 那就不需要抽象工厂。