# 抽象工厂模式

## 抽象工厂模式

是一种为访问类提供一个创建一组相关或相互依赖对象的接口， 且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。

抽象工厂模式是工厂方法模式的升级版本

工厂方法模式中一个工厂只生产一种产品，而在抽象工厂模式中，一个工厂生产多种产品，并且存在多个工厂

抽象工厂模式提供一个接口，用于船舰相关或者依赖对象的家族，而不用指定具体的类

## 产品族，产品等级

抽象工厂模式中有这两个概念

产品族：同一个具体工厂所生产的位于不同产品等级的所有产品称作一个产品族。比如电动车工厂生产的电动车和电动车配件就属于一个产品族

产品等级：产品等级可以理解为同一类产品属于一个等级，比如电动车、汽油车都属于车，属于一个产品等级

举例说明

华为族：华为手机、华为耳机、华为充电宝

小米族：小米手机、小米耳机、小米充电宝

产品等级手机：华为手机、小米手机、苹果手机

产品等级耳机：华为耳机、小米耳机、苹果耳机

## 模拟场景

汽车公司不仅卖车（电动车，汽油车），同时还卖车的配件（电动车配件，汽油车配件）， 但是按照工厂方法模式，一个工厂只能产出一种产品，不太适合，此时可以选择抽象工厂模式

该场景中有两类产品：车、配件

两个产品族：电动族、汽油族
