news 2026/6/16 18:12:04

java设计模式 - 工厂方法模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java设计模式 - 工厂方法模式

1.优缺点

优点:
  • 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。
  • 灵活性增强,对于新产品的创建,只需多写一个相应的工厂类。
  • 典型的解耦框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则。
缺点:
  • 类的个数容易过多,增加复杂度
  • 增加了系统的抽象性和理解难度
  • 抽象产品只能生产一种产品,此弊端可使用java设计模式 - 抽象工厂模式解决
应用场景:
  • 客户只知道创建产品的工厂名,而不知道具体的产品名。如 TCL 电视工厂、海信电视工厂等。
  • 创建对象的任务由多个具体子工厂中的某一个完成,而抽象工厂只提供创建产品的接口。
  • 客户不关心创建产品的细节,只关心产品的品牌

2.结构

工厂方法模式的主要角色如下:

  • 抽象工厂(Abstract Factory:提供了创建产品的接口,调用者通过它访问具体工厂的工厂方法 newProduct() 来创建产品。
  • 具体工厂(ConcreteFactory:主要是实现抽象工厂中的抽象方法,完成具体产品的创建。
  • 抽象产品(Product:定义了产品的规范,描述了产品的主要特性和功能。
  • 具体产品(ConcreteProduct:实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间一一对应。
结构图.png

3.示例代码

public class AbstractFactoryTest { public static void main(String[] args) { try { Product a; AbstractFactory af; af = (AbstractFactory) ReadXML1.getObject(); a = af.newProduct(); a.show(); } catch (Exception e) { System.out.println(e.getMessage()); } } } //抽象产品:提供了产品的接口 interface Product { public void show(); } //具体产品1:实现抽象产品中的抽象方法 class ConcreteProduct1 implements Product { public void show() { System.out.println("具体产品1显示..."); } } //具体产品2:实现抽象产品中的抽象方法 class ConcreteProduct2 implements Product { public void show() { System.out.println("具体产品2显示..."); } } //抽象工厂:提供了厂品的生成方法 interface AbstractFactory { public Product newProduct(); } //具体工厂1:实现了厂品的生成方法 class ConcreteFactory1 implements AbstractFactory { public Product newProduct() { System.out.println("具体工厂1生成-->具体产品1..."); return new ConcreteProduct1(); } } //具体工厂2:实现了厂品的生成方法 class ConcreteFactory2 implements AbstractFactory { public Product newProduct() { System.out.println("具体工厂2生成-->具体产品2..."); return new ConcreteProduct2(); } }

4.参考

工厂方法模式

© 著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务


喜欢的朋友记得点赞、收藏、关注哦!!!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 15:39:12

Windows 11 24H2 LTSC微软商店恢复终极指南

Windows 11 24H2 LTSC微软商店恢复终极指南 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 在企业级部署和个人使用环境中,Windows 11 24H…

作者头像 李华
网站建设 2026/6/13 16:49:57

解锁《星露谷物语》隐藏宝藏:StardewXnbHack带你玩转游戏资源

解锁《星露谷物语》隐藏宝藏:StardewXnbHack带你玩转游戏资源 【免费下载链接】StardewXnbHack A simple one-way XNB unpacker for Stardew Valley. 项目地址: https://gitcode.com/gh_mirrors/st/StardewXnbHack 你是否曾经盯着《星露谷物语》里那些可爱的…

作者头像 李华
网站建设 2026/6/13 15:06:00

Steam游戏清单自动下载:5分钟快速上手终极指南

还在为手动查找Steam游戏清单而烦恼吗?Onekey Steam Depot清单下载工具让这一切变得简单。这款开源工具专为游戏玩家设计,只需输入游戏App ID,就能自动从Steam官方服务器获取完整的游戏清单数据,彻底告别繁琐的手动操作流程。 【免…

作者头像 李华
网站建设 2026/6/16 18:32:49

Vue3地图组件化实践:从困境突破到优雅集成

Vue3地图组件化实践:从困境突破到优雅集成 【免费下载链接】vue3-google-map A set of composable components for easy use of Google Maps in your Vue 3 projects. 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-google-map 当传统地图集成遇上现代前…

作者头像 李华
网站建设 2026/6/16 13:06:42

Windows 11 24H2 LTSC终极指南:5分钟快速恢复微软商店完整功能

Windows 11 24H2 LTSC终极指南:5分钟快速恢复微软商店完整功能 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore Windows 11 24H2 LTSC版本凭…

作者头像 李华
网站建设 2026/6/15 20:42:28

22、办公软件操作指南:Word、Excel、Access与PowerPoint

办公软件操作指南:Word、Excel、Access与PowerPoint 在当今数字化办公的时代,熟练掌握办公软件是提升工作效率和质量的关键。以下将详细介绍Word、Excel、Access和PowerPoint这四款常用办公软件的相关操作和功能。 1. 数据文件列表 1.1 Word数据文件 Word的数据文件丰富多…

作者头像 李华