抽象工厂模式用于需要生产产品族的情况。什么是产品族?产品族指的是同一约束下的多个产品,如宝马车的车门,车身可以是一个产品族,奔驰车的车门和车身可以是一个产品族。而奔驰和宝马则表示不同的产品等级。
抽象工厂需要生产车门和车身。而具体的奔驰车厂则需要生产奔驰车门,奔驰车身。具体的宝马车厂需要生产宝马车门和宝马车身。
也就是工厂需要生产整个产品族的方法。一个产品族里有多少种产品,则有多少个方法。
而有多少个等级,则有多少个具体的工厂。
所以,抽象工厂扩展产品等级很容易,只需要加个具体的工厂类就行了。但是扩展产品族很难,因为需要修改所有的工厂。