- 简单工厂模式
只有一个工厂生产所有产品,需要生产什么产品,只需要告诉工厂产品的名称即可。
缺点:1、当需要生产新的产品时,需要工厂增加新的产品线(修改工厂类),违反“闭开原则”,
2、所有产品都交给这一个工厂生产,当产品种类很多时,会使工厂很大(工厂类显的臃肿),并且容易出现单点故障,即:如果工厂出现问题,将会导致整个工厂停工(系统故障)
- 工厂方法模式(工厂模式)
为了改善简单工厂模式的缺点,衍生出工厂方法模式。
成立一个工厂总部(抽象类),只接业务不进行生成,下面开n个子工厂(子类)进行生产(负责目标类的创建),且每个子工厂只会生产一种产品,总部工厂不知道各子工厂个能生产什么产品,当客户需要产品时,找到工厂总部,告诉工厂总部工作人员,哪个子工厂能生产这个产品,总部接到业务需求后,分配给相应子工厂进行生产。这样当需要增加新的产品种类时,只需要开设新的子工厂即可,不需要总工厂变动(无需修改总工厂类)。
缺点:1、每增加一个新的产品,都要增加一个工厂,占用土地(增加资源开销)
2、客户需要知道哪个工厂能生产哪个产品。
- 抽象工厂模式
为了改善工程模式的缺点,衍生出抽象工厂模式
抽象工厂是有n个工厂,每个工厂都能生成相同用途的产品,且有多个产品线(可以生产多个商品),但是生成的产品外观,构造等不同,根据工厂划分为不同的品牌,当客户需要产品时,先确定需要什么牌子的什么产品,只需要知道找对应品牌的生产工厂进行加工即可。
缺点:当需要在每个工厂中增加新的产品时,会比较麻烦,需要对每个工厂增加产品线(修改每个工厂类),但是对于增加一个新的品牌比较容易(新增工厂即可)
以上为个人理解,如有理解错误,欢迎纠正。