网上讲解工厂模式时,常常将其划分为多种类型,层层递进,术语繁杂,流程冗长,容易让人迷失在细节中。这样的教学方式是否过于复杂,反而掩盖了设计模式最本质的思想,使人难以把握核心要点,不禁令人反思:我们是否偏离了最初要解决的问题?
1、设想我们创办一家公司,主营生产苹果6和苹果7两款手机。为了统一管理生产流程,我们设计一个专门的工厂类,负责这两款产品的制造。
2、首先定义两个表示苹果手机的类,然后创建一个工厂类,并在其中设置两个静态方法,分别用于生成苹果6和苹果7的实例对象。
3、工厂顺利运行,能够高效地生产所需机型,系统稳定,成果喜人。

立即学习“Java免费学习笔记(深入)”;
4、但某天苹果公司发布了新款iPhone 8,市场需求随之变化:
5、我们先为苹果8创建一个对应的类,模拟新机型的结构。
6、此时出现一个问题:若要在原有工厂中支持苹果8的生产,就必须修改工厂类,添加一个新的生产方法。

7、这种方式在Java中并不推荐,因为它违反了“开闭原则”——即软件实体应当对扩展开放,对修改关闭。我们应该通过扩展来增加功能,而不是直接修改已有代码。
8、借助接口实现多态是Java的核心思想之一,接口变量可以指向其实现类的对象,从而实现解耦与灵活替换。
9、因此,我们定义一个IApple接口,让苹果6和苹果7两个类都实现该接口,统一对外提供一致的行为规范。

文心大模型
百度飞桨-文心大模型 ERNIE 3.0 文本理解与创作
56 查看详情

10、接着定义一个名为IAppleFactory的工厂接口,内部声明一个getApple方法,用于返回IApple类型的对象。

11、随后创建Apple6Factory类,实现IAppleFactory接口,专门负责苹果6的生产逻辑。
12、同理,我们也建立Apple7Factory工厂类,专用于生产苹果7设备。


13、当苹果8上市时,我们只需新增一个Apple8Factory工厂类,实现相同的工厂接口即可。原有的苹果6和苹果7工厂无需任何改动。
14、这种做法实现了功能的可扩展性,系统在不修改旧代码的前提下支持新产品,完全符合开闭原则,真正体现了工厂模式的设计精髓。


以上就是Java工厂模式详解的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/518795.html
微信扫一扫
支付宝扫一扫