其他分享
首页 > 其他分享> > 二十三天搞懂设计模式之抽象工厂模式

二十三天搞懂设计模式之抽象工厂模式

作者:互联网

你好,我是小黄,一名独角兽企业的Java开发工程师
校招收获数十个offer,年薪均20W~40W
感谢茫茫人海中我们能够相遇,
俗话说:当你的才华和能力,不足以支撑你的梦想的时候,请静下心来学习,
希望优秀的你可以和我一起学习,一起努力,实现属于自己的梦想。
欢迎关注我的公众号:“爱敲代码的小黄”

文章目录

抽象工厂模式

1. 介绍

意图:提供一个创建一系列相关或者依赖的接口,而无需指定他们具体的类

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

当前有个换装游戏,进入不同的游戏场景需要选择不同的游戏套装,比如,正常的都市套装,里面包含的东西有:

这时候,一个吃着面包、拿着AK47、开着宝马的人物形象就跃然纸上,但是,当我们进入警察局时,如果我们的枪被警察看到,游戏将直接结束。

所以,我们需要进行一键换装,将我们的人物形象转换成吃着棒棒糖、拿着电脑、骑着滑板的形象,这样才可以进入警察局,完成我们的人物,接下来,我们来看下这种如何实现。

2. 实现

我们整体的结构图如下所示:

在这里插入图片描述

我们将武器、食物、车辆封装成各自的抽象类,实现其不同的方法,如:AK47、Computer等

创建一个 AbstractFactory 的抽象工厂,用于生产一类产品族,生产武器、食物、车辆等

对于不同的场景,我们需要定制不同的工厂类

正常人的换装工厂,我们让其返回的是宝马、面包、AK47

警局的换装工厂,我们让其返回的是滑板、棒棒糖、电脑

main 中指定不同的换装工厂,即可完成该需求

3. 代码

4. 总结

我们可以看到,通过以上的方式,我们可以瞬间完成服装的转换

我们在进行扩展的时候,也比较方便

假如我当前需要增加一个食物为汉堡,只需要继承我们的 Food 即可

抽象工厂也存在一定的缺点,当我需要增加一个产品为爱好,需要创建该抽象类,并且在 AbstractFactory 指定,这种扩展不太容易

当然,每一个东西有利必定有弊,我们在进行抽象工厂创建的时候,可以事先规划好这一批产品族的产品,防止后续再进行添加维护

好了,本期的抽象工厂到这里就结束了

我是一名独角兽企业的Java开发工程师,有问题可以留言或者私信加我微信,我们下期再见

标签:二十三,Food,abstract,public,extends,Vehicle,搞懂,设计模式,class
来源: https://blog.csdn.net/qq_40915439/article/details/119275585