1.三种工厂模式的概念
tag: 为方便说明:A表示Client,B表示Factory,C表示Product。
简单工厂:类关系模式为:A用不同参数通过B获取C的不同实例。
工厂方法:类关系模式为:A通过B的不同实例获取C的不同实例。
抽象工厂:类关系模式为:B具有生产C和D的能力,A通过B的不同实例获取C和D的不同实例。
标注:图片来自:https://www.cnblogs.com/qiaoconglovelife/p/5750290.html
2.如何清晰的认识和区分
场 景:一台电脑的产生一定需要主板,CPU,内存条,显示器。
如果有一个工厂专门生产各种型号的主板,那么这个工厂可以说是简单工厂也可以说是工厂方法,怎样区分是简单工厂还是工厂方法呢?如果客户是通过一个主板型号单来购买主板,这时此厂需要按清单生产相应的主板给客户,这就是简单工厂;如果客户不想写单,而是自己按照这个厂规范自己造厂来生产这种型号的主板,这就是工厂方法。
如果有一个工厂可以同时生产不同型号的主板,CPU,内存条,显示器,那么可以说成是抽象工厂,它和工厂方法一样也是自己根据建厂规范自己造厂子,只是这个厂子可以同时生产各种类型的产品(主板,CPU,内存条,显示器)。
ps:可以说简单工厂和工厂方法近似相同,都是一次给客户生产一类型产品,只是实现方式稍微不同而已,一个通过传参,一个通过不同子类。而抽象工厂的建厂规范就不同了,厂子具有同时生产各种产品的能力,一次给客户生产多个类型的产品。