抽象模式是围绕一个超级工厂创建许多继承他的小工厂来创建对象。属于创建型模式。
在介绍模式之前先将两个概念:产品结构和产品族
什么是产品结构呢?比如有一个类代表电视机,而电视机又有很多品牌(海尔、TCL、小米等),而这些电视品牌就是产品结构。
那什么是产品族呢?你家里的电器不可能只有电视吧,咋地也得有个冰箱空调啥的吧。海尔他不光产电视,也有冰箱空调,而海尔品牌的电视、冰箱、空调就是产品族。族就是家族嘛,一个家族要姓氏一样的。
而族就是相当于一个个创造实体类的工厂,一个工厂里有多个相同类型的对象。
优点: 当一个产品族中多个对象被设计成一起工作时,他能保证客户端只使用同一个产品族中的对象。
当你有多个对象之间需要相互作用,相互通信时,只需要明显地使用同一个类型的工厂创建即可。
缺点:
产品族扩展非常困难,要增加一个系列的某一产品,既要在抽象的 Creator 里加代码,又要在具体的里面加代码。
注意事项:
产品族难扩展,产品等级易扩展。
实现: