英菲尼迪

大白话抽象工厂模式(Abstract Factory Pattern)

五迷三道 提交于 2020-01-06 22:23:18
实例分析 大白话工厂方法模式(Factory Method) 一文中,我们讲解了日产4S店工厂规模的扩大,创建了针对不同车型的工厂,减少了工厂的工作内容,提高了效率。下面我们继续以4S店的故事讨论抽象工厂模式。 为了满足各个阶层的客户,日产公司推出了豪华系列品牌 英菲尼迪 ,而且为了吸引客户购买,购车赠送行车记录仪,购买日产汽车赠送日产行车记录仪。购买英菲尼迪汽车赠送英菲尼迪行车记录仪。 通过上面的描述我们引出产品族和等级结构的定义。 产品族 :即来自一个家族,比如英菲尼迪汽车和英菲尼迪行车记录仪都来自英菲尼迪家族,日产汽车和日产行车记录仪都来自日产家族。 等级结构 :可以理解为相同的产品,比如英菲尼迪汽车和日产汽车处于同一个等级结构,英菲尼迪行车记录仪和日产行车记录仪处于同一个等级结构。 现在假设工厂分为日产工厂和英菲尼迪工厂,且汽车和行车记录仪都只有一种型号。日产工厂需要生产相同产品族的日产汽车和日产行车记录仪。英菲尼迪工厂需要生产相同产品族的英菲尼迪汽车和英菲尼迪行车记录仪。 通过对比,发现和工厂方法模式的区别为: 工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构 代码如下: 代码片段1 汽车父类 /** * 汽车的父类 * @author coderzcr */ public abstract class Car { String name ;