抽象工厂模式(一天一个设计模式——(2)抽象工厂模式)

抽象工厂模式(一天一个设计模式——(2)抽象工厂模式)

抽象工厂(一天一个设计模式-(2)抽象工厂)

(2)抽象工厂

按照单一原则,前面提到的工厂模型,一个工厂只生产一个对象,这样当业务复杂时,系统必然会显得非常臃肿。显然没有达到我们使用设计模式的目的。当我们的产品对象可以按级别分类时,指定工厂有没有可能按类别或级别创建一个类对象?这时候我们的抽象工厂就派上用场了。

今天的抽象工厂很好地解决了工厂子类只负责在工厂模型中创建一个产品的缺点。以下是对产品系列和产品等级概念的参考:

产品族:是产品族,比如美的品牌空 tune、洗衣机、电饭煲等。还有格力、奥克斯等。

产品等级:是产品类别,如美的空、格力空、奥克斯空等;都是空音。

因此,当存在多个产品层次结构时,抽象工厂可以用一个工厂层次结构创建多个具有不同产品层次结构的产品对象;然而,工厂方法模型更多的是一个产品层次结构。这是两者的主要区别。因此,当工厂层次结构可以创建属于不同产品层次结构的产品系列中的所有对象时,抽象工厂比工厂方法模式更简单、更有效。

1.抽象工厂设计原则

抽象工厂:所有工厂方法的父类;

一种实现抽象工厂的具体工厂;

抽象产品:一类产品的父类;

特定产品:由特定工厂制造的特定产品。

2.简单的案例

在课程产品家族的基础上,我们增加了两个产品,比如课程提供的录制视频和课程笔记。(横向和纵向划分业务。横向有Java和Python课程,纵向每个课程都有提供视频和笔记的功能。)

3.抽象工厂的注释

当添加新的产品对象时,很难扩展抽象工厂来生产新种类的产品。这是因为所有可能的产品集都在抽象工厂角色中指定。支持新种类的产品意味着扩展接口,这将涉及到对抽象工厂角色及其所有子类的修改,这显然会带来很大的不便。

Open closed principle的倾斜性:从上面的例子可以看出,添加一个工厂和产品族很容易,比如BigDataCourseFactory,但是添加产品级比如课程支持提供源代码就比较困难。

以上就是由优质生活领域创作者 嘉文社百科网小编 整理编辑的,如果觉得有帮助欢迎收藏转发~

分享到 :
相关推荐

意大利是哪个国家(意大利是哪个国家的首都)

意大利是欧洲民族和文化的摇篮,曾经孕育了罗马文化和特鲁利亚、拉斯坎文明。意大利首都罗...

豆角炖肉(豆角炖肉窍门)

   今天我想和大家分享一个关于焖豆的问题(焖豆的绝招)。以下是边肖对这个问题的总结...

楼宇控制系统(智能化建筑—楼宇自控系统)

建筑控制系统(智能建筑-建筑自动控制系统)楼宇自动化系统的组成和功能1.楼宇自动化系...

塑料口罩(塑料口罩有用吗)

今天就和大家分享一下塑料口罩的知识,解释一下塑料口罩到底有没有用。如果你碰巧解决了你...

满满一大杯牛奶(满满一大杯牛奶动漫)

今天给大家分享满满一杯牛奶的知识,也讲解一下满满一杯牛奶的动画。如果你碰巧解决了你现...

「重点」gy6改什么缸提速快

gy6改200cc、250cc气缸都可提速。推荐改200cc的。再大就要挖箱体了。搞...

帝国文明攻略大全(帝国文明攻略大全免费阅读)

今天给大家分享一个关于帝国文明攻略的问题(帝国文明攻略免费阅读)。以下是这个问题的总...

「已解决」醋和南瓜相克吗

醋和南瓜相克的。南瓜加醋。醋酸会破坏南瓜中的营养元素。降低营养价值。南瓜富含淀粉蛋白...