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

阿里 通义千问 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.dtcms.com/a/348490.html

相关文章:

  • Python性能优化实战(三):给内存“减负“的实用指南
  • mysql 5.7 查询运行时间较长的sql
  • 【数据结构入门】排序算法(2):直接选择排序->堆排序
  • NLP:Transformer各子模块作用(特别分享1)
  • Python JSON数据格式
  • 禁用 Nagle 算法(TCP_NODELAY)
  • 【数据结构】-5- 顺序表 (下)
  • 谷德红外温度传感器在 3D 打印领域应用探究
  • 【小程序-慕尚花坊02】网络请求封装和注意事项
  • 序言|从《Machine Learning: A Probabilistic Perspective》出发:我的学习实践
  • 16、web应用系统分析语设计
  • 经营分析的价值不在报告厚度,而在行动颗粒度
  • .NET反射与IL反编译核心技术
  • 关于 svn无法查看下拉日志提示“要离线”和根目录看日志“no data” 的解决方法
  • Rust Web开发指南 第三章(Axum 请求体解析:处理 JSON、表单与文件上传)
  • 【Python NTLK自然语言处理库】
  • 数学建模-线性规划(LP)
  • GPT-5国内免费体验
  • 【Android】从一个AndroidRuntime看类的加载
  • Unreal Engine 下载与安装全指南:从入门到配置详解
  • 淘宝API实战应用:数据驱动商品信息实时监控与增长策略
  • 13种常见机器学习算法面试总结(含问题与优质回答)
  • 【209页PPT】P2ITSP新奥IT战略规划架构设计报告(附下载方式)
  • Python基础之运算符
  • Vue3 学习教程,从入门到精通,基于 Vue3 + Element Plus + ECharts + JavaScript 开发图片素材库网站(46)
  • 塔能科技物联精准节能如何构建智慧路灯免疫系统
  • 【软考选择】系分和架构哪个好考?适合什么样的人?
  • 简历书写指南
  • [创业之路-560]:机械、电气、自控、电子、软件、信息、通信、大数据、人工智能,上述技术演进过程
  • Linux shell脚本数值计算与条件执行