Java 设计模式:软件开发的精髓与艺

devtools/2025/3/3 22:37:02/

目录


在软件开发的浩瀚星空中,设计模式犹如一颗颗璀璨的星辰,照亮了开发者前行的道路。它们是经验的结晶,是智慧的传承,帮助我们解决了一个又一个棘手的问题。今天,就让我们一同走进 Java 设计模式的世界,探索那些隐藏在代码背后的奥秘。

一、设计模式的起源

设计模式的概念最早可以追溯到 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四位大师合著的《Design Patterns: Elements of Reusable Object-Oriented Software》一书。这本书被誉为 “四人帮”(Gang of Four,GoF)的经典之作,书中总结了 23 种设计模式,为软件开发提供了宝贵的指导。

二、设计模式的分类

设计模式主要分为三大类:创建型模式、结构型模式和行为型模式。

1. 创建型模式

创建型模式关注对象的创建过程,旨在以适当的方式创建对象,增强代码的灵活性和可复用性。常见的创建型模式有:

  • 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供全局访问点。
  • 工厂模式(Factory Pattern):定义一个创建对象的接口,由子类决定实例化哪一个类。
  • 抽象工厂模式(Abstract Factory Pattern):提供一个接口,创建相关或依赖对象的家族,而无需指定具体类。
  • 建造者模式(Builder Pattern):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。
  • 原型模式(Prototype Pattern):通过复制现有的实例来创建新的对象,而不是通过实例化类。

2. 结构型模式

结构型模式关注类和对象的组合,旨在以适当的方式组合对象,形成更大的结构。常见的结构型模式有:

  • 适配器模式(Adapter Pattern):将一个类的接口转换成客户希望的另一个接口,使原本由于接口不兼容而不能一起工作的类可以一起工作。
  • 装饰器模式(Decorator Pattern):动态地给对象添加一些额外的职责,而不影响其他对象。
  • 代理模式(Proxy Pattern):为其他对象提供一个代理以控制对这个对象的访问。
  • 桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使它们都可以独立地变化。
  • 组合模式(Composite Pattern):将对象组合成树形结构以表示部分-整体的层次结构,使用户对单个对象和组合对象的使用具有一致性。

3. 行为型模式

行为型模式关注对象之间的协作,旨在以适当的方式让对象之间进行通信和协作,完成特定的任务。常见的行为型模式有:

  • 策略模式(Strategy Pattern):定义一系列算法,并将每个算法封装起来,使它们可以互换使用。
  • 模板方法模式(Template Method Pattern):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变算法结构即可重新定义算法的某些特定步骤。
  • 观察者模式(Observer Pattern):定义对象间的一对多依赖,当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。
  • 命令模式(Command Pattern):将请求封装为对象,从而可用不同的请求、队列或者日志来参数化其他对象,支持可撤销的操作。
  • 责任链模式(Chain of Responsibility Pattern):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合。

三、设计模式的实践

1. 单例模式

单例模式确保一个类只有一个实例,并提供全局访问点。以下是一个简单的单例模式实现:

java">public class Singleton {private static Singleton instance;private Singleton() {}public static synchronized Singleton getInstance() {if (instance == null

http://www.ppmy.cn/devtools/164300.html

相关文章

采样算法二:去噪扩散隐式模型(DDIM)采样算法详解教程

参考 https://arxiv.org/pdf/2010.02502 一、背景与动机 去噪扩散隐式模型(DDIM) 是对DDPM的改进,旨在加速采样过程同时保持生成质量。DDPM虽然生成效果优异,但其采样需迭代数百至数千次,效率较低。DDIM通过以下关键…

1024阿里云活动集锦

1024阿里云活动集锦 1024 活动集锦海量咨询,AI助手为你答疑解惑1024 云上实操挑战其他体验活动测评活动写在最后 1024 活动集锦 在1024这个属于广大程序员的日子,阿里云为每一位程序员提供了多场景多批次多活动的开发者活动来供大家happy。可以让每一位…

【vue-echarts】——04.配置项---legend

文章目录 一、配置项-legend图例二、显示结果一、配置项-legend图例 图例组件展现了不同系列的标记,颜色和名字。可以通过点击图例控制哪些系列不显示。 代码如下 Demo4View.vue <template><div class="about">

PostgreSQL 中进行数据导入和导出

在数据库管理中&#xff0c;数据的导入和导出是非常常见的操作。特别是在 PostgreSQL 中&#xff0c;提供了多种工具和方法来实现数据的有效管理。无论是备份数据&#xff0c;还是将数据迁移到其他数据库&#xff0c;或是进行数据分析&#xff0c;掌握数据导入和导出的技巧都是…

深入理解 Linux 内核模块:核心知识、实战解析与高频面试题

1. 什么是 Linux 内核模块&#xff1f; 1.1 定义 Linux 内核模块&#xff08;Kernel Module&#xff09;是 可动态加载和卸载的内核代码&#xff0c;它允许开发者在 无需重启系统 的情况下扩展内核功能&#xff0c;例如&#xff1a; 设备驱动&#xff08;Drivers&#xff09…

提升 Spring Boot 系统性能:高效处理实时数据流的 BufferTrigger 使用详解

提升 Spring Boot 系统性能&#xff1a;高效处理实时数据流的 BufferTrigger 使用详解 在现代应用中&#xff0c;特别是像社交平台、金融系统等高并发场景下&#xff0c;如何高效地处理大量实时数据成为了系统设计的一个关键问题。BufferTrigger 是由快手开源的一个工具&#…

React核心知识及使用场景

React是一个用于构建用户界面的JavaScript库,尤其适合构建单页面应用(SPA)。它基于组件化的开发思想,主要特点是通过虚拟DOM来提高渲染效率。以下是React的核心知识和使用场景: 一. 核心知识 组件化: 类组件和函数组件:React的组件分为类组件和函数组件。类组件通过继承…

3.jvm的执行流程

自上向下 ​编译&#xff1a;.java → .class。 ​加载&#xff1a;类加载器加载字节码到方法区&#xff0c;生成Class对象。 ​内存分配&#xff1a;对象实例存入堆&#xff0c;方法调用栈帧入虚拟机栈。 ​执行&#xff1a;解释器或JIT执行字节码&#xff0c;本地方法通过JNI…