一只烤鸭朝北走

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

定义:抽象工厂模式简单地讲,就是提供一个超级工厂,围绕这个超级工厂创建其他工厂;抽象工厂模式提供一个创建一些列相关或者相互依赖对象的接口;

  在此之前我们先来讲一下产品等级和产品族的概念;

  相同的产品等级就是相同的同一类的产品,比如美的冰箱、格力冰箱、海尔冰箱,他们的产品等级都相同,虽然厂家不同(属于同一品类);

  美的冰箱、美的空调、美的电风扇,他们虽然不是同一个产品等级,但是他们都属于同一个厂商,因此他们的产品族相同;

  抽象工厂模式是创建型模式,他强调一些列相关产品对象的创建过程(即同一产品族),它和工厂方法模式的侧重点不同,工厂方法模式更侧重于同一类(同一产品等级)产品的创建。

  在抽象工厂模式中,抽象工厂类提供具体工厂的定义,每个具体工厂按照工厂模式提供相应的对象;

主要解决:接口选择问题;

何时使用:系统中有多于一个的产品族,而系统只消费其中某一族的产品;

如何解决:在一个产品族中,定义多个产品;

关键代码:在一个工厂里聚合多个产品;

UML类图:

优点:当一个产品族中的多个对象被设计成一起工作时,他能保证客户端中始终只使用同一产品族中的对象;

缺点:产品族扩展困难,需要增加一个系列的某一个产品时,既需要在抽象工厂增加代码,又需要在具体实现工厂中增加代码;

使用场景:

  1、QQ换肤,一套一起换装;

  2、生成不同操作系统的程序;

注意事项:产品族扩展困难,产品等级扩展容易; 

posted on 2022-08-29 10:05  一只烤鸭朝北走  阅读(53)  评论(0编辑  收藏  举报