当前位置: 首页 > java >正文

阿里 通义千问 Java23种设计模式

Java的23种设计模式是软件开发中常用的解决方案,分为三大类:

创建型模式(5种)用于对象的创建,隐藏创建逻辑,提供更灵活的实例化方式。
  1. 单例模式(Singleton) - 目的:确保一个类只有一个实例,并提供全局访问点。 - 实现:私有化构造方法,通过静态方法返回唯一实例。 - 示例:线程池、配置管理器。

  2. 工厂方法模式(Factory Method) - 目的:定义创建对象的接口,让子类决定实例化哪个类。 - 实现:抽象工厂方法,由子类实现具体对象的创建。 - 示例:JDBC的DriverManager.getConnection()

  3. 抽象工厂模式(Abstract Factory) - 目的:创建一组相关或依赖的对象,而无需指定具体类。 - 实现:提供抽象工厂接口,生产多个系列产品。 - 示例:数据库操作组件的跨数据库支持。

  4. 建造者模式(Builder) - 目的:将一个复杂对象的构建与表示分离,使构建过程可配置。 - 实现:建造者类逐步构建对象,最终返回完整实例。 - 示例:StringBuilder。

  5. 原型模式(Prototype) - 目的:通过复制现有实例创建新对象,避免复杂初始化过程。 - 实现:实现Cloneable接口,重写clone()方法。 - 示例:简历复制。

结构型模式(7种)关注类和对象的组合,优化结构,实现功能扩展和灵活性。
  1. 适配器模式(Adapter) - 目的:将不兼容的接口转换为可兼容的接口。 - 实现:通过适配器类包装不兼容的对象。 - 示例:电源适配器。

  2. 桥接模式(Bridge) - 目的:将抽象部分与实现部分分离,使它们可以独立变化。 - 实现:抽象类和实现类各自继承,通过组合关联。 - 示例:跨平台的图形界面库。

  3. 组合模式(Composite) - 目的:将对象组合成树形结构,统一处理单个对象和组合对象。 - 实现:定义统一的接口,包含添加、删除等操作。 - 示例:文件系统目录结构。

  4. 装饰器模式(Decorator) - 目的:动态地给对象添加额外的职责,不改变其接口。 - 实现:装饰器类实现与原始类相同的接口,包装原始对象。 - 示例:IO流的层层包装。

  5. 外观模式(Facade) - 目的:为复杂的子系统提供一个简化的统一接口。 - 实现:外观类封装子系统的复杂操作。 - 示例:计算机启动过程封装。

  6. 享元模式(Flyweight) - 目的:通过共享技术有效支持大量细粒度对象的复用。 - 实现:将对象分为内部状态和外部状态,共享内部状态。 - 示例:字符串池、线程池。

  7. 代理模式(Proxy) - 目的:为其他对象提供一个代理,控制对其访问。 - 实现:代理类实现与目标类相同的接口,代理实际对象的操作。 - 示例:远程代理、虚拟代理、安全代理。

行为型模式(11种)关注对象之间的通信和职责分配,优化系统行为。
  1. 责任链模式(Chain of Responsibility) - 目的:将请求的发送者和接收者解耦,多个对象依次处理请求。 - 实现:每个处理者持有下一个处理者的引用,形成链式结构。 - 示例:审批流程。

  2. 命令模式(Command) - 目的:将请求封装为对象,支持请求的排队、记录、撤销等操作。 - 实现:定义命令接口,包含执行方法。 - 示例:遥控器操作。

  3. 解释器模式(Interpreter) - 目的:定义语言的文法表示,并解释执行语言中的句子。 - 实现:构建抽象语法树,解释执行。 - 示例:正则表达式引擎。

  4. 迭代器模式(Iterator) - 目的:提供一种遍历集合元素的方法,不暴露集合内部结构。 - 实现:定义迭代器接口,提供遍历方法。 - 示例:集合类的迭代器。

  5. 中介者模式(Mediator) - 目的:解耦多个对象之间的复杂交互,通过中介者协调。 - 实现:中介者类负责对象间的通信。 - 示例:聊天室系统。

  6. 备忘录模式(Memento) - 目的:保存对象内部状态,实现状态的恢复。 - 实现:备忘录类存储状态,管理类负责状态的保存和恢复。 - 示例:游戏中的存档和读档。

  7. 观察者模式(Observer) - 目的:定义对象间的一对多依赖关系,当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新。 - 实现:主题维护观察者列表,状态改变时通知观察者。 - 示例:天气预报系统。

  8. 状态模式(State) - 目的:允许对象在内部状态改变时改变其行为,看起来像是改变了类。 - 实现:定义状态接口,不同状态实现不同行为。 - 示例:电梯运行状态。

  9. 策略模式(Strategy) - 目的:定义一系列算法,使它们可以互相替换,不影响客户端使用。 - 实现:定义策略接口,不同策略实现不同算法。 - 示例:排序算法的选择。

  10. 模板方法模式(Template Method) - 目的:定义算法骨架,将具体步骤延迟到子类实现。 - 实现:抽象类定义模板方法,包含基本方法和抽象方法。 - 示例:数据库访问的通用流程。

  11. 访问者模式(Visitor) - 目的:在不改变元素类的前提下,定义新的操作作用于元素。 - 实现:访问者接口定义访问方法,元素类接受访问者。 - 示例:文件系统的不同类型文件操作。

这些设计模式为软件开发提供了宝贵的经验总结,灵活运用它们可以提升代码的可重用性、可维护性和可扩展性。

http://www.xdnf.cn/news/18651.html

相关文章:

  • IDM 下载失败排查指南:全面解析与解决方案
  • 深入解析 std::enable_if:原理、用法与现代 C++ 实践
  • 编程与数学 02-017 Python 面向对象编程 20课题、迭代器模式
  • 大数据毕业设计选题推荐-基于大数据的丙型肝炎患者数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • 深入解析十大经典排序算法原理与实现
  • 室联人形机器人:家政服务任务结构化、技术要点、深入应用FPGA的控制系统框架设计(整合版A)
  • 【运维进阶】高可用和负载均衡技术
  • Django的Serializers与 fastapi 的Pydantic
  • 【R语言】R语言中 rbind() 与 merge() 的区别详解
  • 网络编程-创建TCP协议服务器
  • 疏老师-python训练营-Day54Inception网络及其思考
  • 屏幕类型与信号接口
  • 【KO】前端面试一
  • LLaMA-Factory 中配置文件或命令行里各个参数的含义
  • 如何利用 DeepSeek 提升工作效率
  • 10.Shell脚本修炼手册---脚本的条件测试与比较
  • 国家自然科学基金(国自然基金)申请技巧详解
  • 深度学习入门:神经网络
  • 【2025CVPR-目标检测方向】UniMamba:基于激光雷达的3D目标检测,采用分组高效曼巴语进行统一空间信道表示学习
  • Q/DR/CX7.2-2020 是中国企业标准体系中
  • 一个备份、去除、新增k8s的node标签脚本
  • `strdup` 字符串复制函数
  • 【JVM内存结构系列】二、线程私有区域详解:程序计数器、虚拟机栈、本地方法栈——搞懂栈溢出与线程隔离
  • 奇怪的前端面试题
  • 智能系统与未来生态演进初步思考
  • LangChain4j中集成Redis向量数据库实现Rag
  • 2-4.Python 编码基础 - 流程控制(判断语句、循环语句、break 语句与 continue 语句)
  • 【Python】新手入门:Python标准库有哪些常用模块?
  • 容器安全实践(二):实践篇 - 从 `Dockerfile` 到 Pod 的权限深耕
  • 美食菜谱数据集(13943条)收集 | 智能体知识库 | AI大模型训练