专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

抽象工厂模式应用场景(24种设计模式优缺点)

来源:小易整编  作者:小易  发布时间:2020-04-03 11:02
摘要:简介 抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用于产品族的构建。 定义 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。(可以认为抽象工厂是对具有同一主题的一组单独工厂方法的封装) 抽象工...

简介

抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用于产品族的构建。

定义

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。(可以认为抽象工厂是对具有同一主题的一组单独工厂方法的封装)

抽象工厂模式中有一个产品族的概念,理解了产品族就算是抽象工厂入门了。所谓产品族,就是一系列相关的产品对象组成的一族对象,它们是独立的同时也是互相关联的,它们共同组合在一起可以变成一个更大的产品。举例来说,Mac 电脑里所有的 UI 组件是一个产品族,存在 MacButton MacText 等组件,对应的 Windows 电脑里所有的 UI 组件也组成了一个产品族,存在 WindowsButton, WindowsText等组件,两个产品族里的产品是不同混合使用的。

角色

抽象工厂模式中存在四种角色,跟工厂方法类似,分别是抽象工厂接口,具体工厂实现,抽象产品接口,具体产品实现。

不同之处在于抽象产品接口会存在多个,而且它们之间具有内在的相关关系。

模式说明

在工厂方法模式中,我们举了造车的例子,其实造车这个例子扩展一下也非常适合于讲解抽象工厂模式;上面在说明产品族时举了Mac 和 Windows 电脑的例子。这里我们使用组装电脑来演示。

现在组装电脑不多见了,一般都是笔记本或一体机,以前大家去卖场里单独买 CPU,主板,显示器等组件可以组装出一台电脑来,在我们的系统里,我们有各种组件,用户可以选择不同的组件来组装自己喜欢的电脑。

但有一点需要注意,主板和 CPU 是需要兼容才能使用的,不是随便搭在一起就成为一台电脑了。

如果由用户自行组装,很可能由于Amd 的主板使用了 Intel 的CPU,导致组装起来的电脑不能正常运行,而且这些细节也不需要用户操心。

设计模式之抽象工厂模式 设计模式之抽象工厂模式

此时我们的抽象工厂模式就登场了,抽象工厂就像是卖场工作人员提供给你的几种套餐一样,定义了组装电脑的套餐,用户可以直接使用套餐里的组件然后组装成电脑,这样就绝对不会出现兼容问题了。

设计模式之抽象工厂模式

有了套餐用户不需要担心不兼容,可以愉快的组装电脑然后使用了。

设计模式之抽象工厂模式

大家有没有发现,用户为了组装一台电脑出来,虽然不需要了解cpu 厂家之类的细节的,还是要了解cpu 怎么装到主板上,主板又怎么装到电脑上,然后才能得到一台完整的电脑,这里又可以用到前一节说的工厂方法模式来帮助用户将电脑组装起来了。

抽象工厂最初是来自操作系统之间的UI 构建,每个系统有自己的一套 UI界面,现在这个限制已经不是很强了,就像Intel 的主板也可以装载AMD 的CPU,这通过再实现一个抽象工厂类就可以了,还有其他的例子譬如电脑的主题,里面包含字体、背景、策略等一系列产品构成的产品族也适合于使用抽象工厂模式。

使用场景
  1. 适合于产品之间相互关联、相互依赖且相互约束的地方
  2. 需要动态切换产品族的地方
优点:
  1. 抽象工厂模式将产品族的依赖与约束关系放到抽象工厂中,便于管理。
  2. 职责解耦,用户不需要关心一堆自己不关心的细节,由抽象工厂来负责组件的创建
  3. 切换产品族容易,只需要增加一个具体工厂实现,客户端选择另一个套餐就可以了
缺点:
  1. 抽象工厂模式类增加的速度很快,有一个产品族就需要增加一个具体工厂实现,比较繁琐
  2. 产品族难以扩展产品。当产品族中增加一个产品时,抽象工厂接口中需要增加一个函数,对应的所有具体工厂实现都需要修改,修改放大严重。
  3. 抽象工厂并未完全屏蔽创建细节,给出的都是组件。对于这种情况可以结合工厂模式或简单工厂模式一起使用。
最佳实践
  1. 大家应该已经发现了,其实抽象工厂模式如果只有一个组件的话,其实是退化到了工厂方法模式,也就是没有了产品族的概念,只剩一个产品了,因此简单工厂,工厂方法,抽象工厂这三者之间是有内在联系的,区别只是产品的复杂度。
  2. 抽象工厂的本质是选择产品族,因此大家可以根据这个特征来识别是否可以应用抽象工厂。


本文地址:问答解惑频道 https://www.hkm168.com/live/133711.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


问答解惑
小编:小易整编
相关文章相关阅读
  • 祝福老师句子大全,教师节送礼必备(感恩教育恩人)

    祝福老师句子大全,教师节送礼必备(感恩教育恩人)

    祝福老师句子大全,教师节送礼必备(感恩教育恩人)教师节是每年的9月10日,这一天是我们向教育恩人表达感激之情和祝福的日子。在这个特殊的日子里,送上一句祝福老师的话语,表达我们对教育工作者的敬意和感激之情,成为了每位学生们献给老师的最好礼物。...

  • 贺知章名句赏析,诗人风采展示(品味优美诗歌)

    贺知章名句赏析,诗人风采展示(品味优美诗歌)

    贺知章名句赏析,诗人风采展示(品味优美诗歌)贺知章,唐代诗人,被誉为“豪放派”代表之一。他的诗歌生动有力,意境深远,语言通俗易懂,充满浓郁的民族气息。他留下了许多优美的诗句,让人感慨万千,不得不赞叹其诗才与风采。其中,著名的“海内存知己,天...

  • 纸飞机折法,制作简单易学(挑战手工艺术)

    纸飞机折法,制作简单易学(挑战手工艺术)

    纸飞机折法,制作简单易学(挑战手工艺术)纸飞机是一款低成本、简单易学的手工艺品,因其制作过程简单易懂,大家可以尝试在家,不需要太多专业工具。首先准备一张A4大小的白纸,将其折成一半,然后再打开,将两边的边角对齐,再次往中间折叠。在折叠的位置...

  • 中超赛程表,看球购票攻略(跟随绿茵场之旅)

     中超赛程表,看球购票攻略(跟随绿茵场之旅)

    中超赛程表,看球购票攻略(跟随绿茵场之旅)中超联赛一直以来都备受球迷关注,每个赛季都会有无数的球迷前往现场观看比赛。为了让广大球迷更好地安排自己的观赛计划,我们在这里为大家介绍一下中超赛程表和看球购票的攻略。中超赛程表中超联赛一般从3月份开...

  • 春节习俗大全,传统文化策源地(领略浓郁年味)

    春节习俗大全,传统文化策源地(领略浓郁年味)

    春节习俗大全,传统文化策源地(领略浓郁年味)春节是中国最重要的传统节日,也被称作“年节”、“新春节”等,是一个具有重大历史意义和文化内涵的节日。说到春节,就不得不提到具有浓郁地域特色和文化内涵的习俗,这些习俗既体现了中华民族的优秀文化传统,...

  • “水”字旁常用字,快速记忆方法(提高汉字识别能力)

    “水”字旁常用字,快速记忆方法(提高汉字识别能力)

    “水”字旁常用字,快速记忆方法(提高汉字识别能力)汉字是中国文化的重要组成部分,对于中文学习者而言,汉字的认识和记忆是非常重要的。其中“水”字是汉字中的一个旁常用字。在学习这个字时,我们可以采用一些快速记忆方法,提高汉字识别能力。首先,我们...

  • 做梦梦见很多蛇,分析梦境内涵(看懂心理暗示)

    做梦梦见很多蛇,分析梦境内涵(看懂心理暗示)

    做梦梦见很多蛇,分析梦境内涵(看懂心理暗示)做梦时梦见很多蛇是一种比较常见的梦境,对于这种梦境的解释和分析是非常重要的。从心理学的角度来看,这种梦境不仅反映了我们潜意识中的想法和情感,也可以为我们指引未来的行动。首先,梦见很多蛇可能说明我们...

  • 制作铃声详解,打造个性化手机(表现自我风格)

    制作铃声详解,打造个性化手机(表现自我风格)

    制作铃声详解,打造个性化手机(表现自我风格)随着移动设备的普及,手机不仅是通信工具,也成为了一种个性化的表现方式。而铃声则是手机个性化中最直接的表现形式之一。制作一个个性化的铃声,不仅可以让你的手机更具有个性化的特色,同时还可以让你展现出自...

  • 周排行
  • 月排行
  • 年排行

精彩推荐