定义:抽象工厂模式简单地讲,就是提供一个超级工厂,围绕这个超级工厂创建其他工厂;抽象工厂模式提供一个创建一些列相关或者相互依赖对象的接口;
在此之前我们先来讲一下产品等级和产品族的概念;
相同的产品等级就是相同的同一类的产品,比如美的冰箱、格力冰箱、海尔冰箱,他们的产品等级都相同,虽然厂家不同(属于同一品类);
美的冰箱、美的空调、美的电风扇,他们虽然不是同一个产品等级,但是他们都属于同一个厂商,因此他们的产品族相同;
抽象工厂模式是创建型模式,他强调一些列相关产品对象的创建过程(即同一产品族),它和工厂方法模式的侧重点不同,工厂方法模式更侧重于同一类(同一产品等级)产品的创建。
在抽象工厂模式中,抽象工厂类提供具体工厂的定义,每个具体工厂按照工厂模式提供相应的对象;
主要解决:接口选择问题;
何时使用:系统中有多于一个的产品族,而系统只消费其中某一族的产品;
如何解决:在一个产品族中,定义多个产品;
关键代码:在一个工厂里聚合多个产品;
UML类图:
优点:当一个产品族中的多个对象被设计成一起工作时,他能保证客户端中始终只使用同一产品族中的对象;
缺点:产品族扩展困难,需要增加一个系列的某一个产品时,既需要在抽象工厂增加代码,又需要在具体实现工厂中增加代码;
使用场景:
1、QQ换肤,一套一起换装;
2、生成不同操作系统的程序;
注意事项:产品族扩展困难,产品等级扩展容易;
本文来自博客园,作者:一只烤鸭朝北走,仅用于技术学习,所有资源都来源于网络,部分是转发,部分是个人总结。欢迎共同学习和转载,转载请在醒目位置标明原文。如有侵权,请留言告知,及时撤除。转载请注明原文链接:https://www.cnblogs.com/wha6239/p/16634926.html