介绍
抽象工厂模式是应对产品族概念的。例如,汽车可以分为轿车、SUV、MPV等,也分为奔驰、宝马等。我们可以将奔驰的所有车看作是一个产品族,而将宝马的所有车看作是另一个产品族。分别对应两个工厂,一个是奔驰的工厂,另一个是宝马的工厂。与工厂方法不同,奔驰的工厂不只是生产具体的某一个产品,而是一族产品(奔驰轿车、奔驰SUV、奔驰MPV)。“抽象工厂”的“抽象”指的是就是这个意思。工厂方法模式是一种极端情况的抽象工厂模式(即只生产一种产品的抽象工厂模式),而抽象工厂模式可以看成是工厂方法模式的一种推广。
工厂模式的区别
- 简单工厂
使用一个工厂对象用来生产同一等级结构中的任意产品。(不支持拓展增加产品) - 工厂方法
使用多个工厂对象用来生产同一等级结构中对应的固定产品。(支持拓展增加产品) - 抽象工厂
使用多个工厂对象用来生产不同产品族的全部产品。(不支持拓展增加产品;支持增加产品族)