常用的设计模式介绍

devtools/2025/1/2 17:28:53/

693562fa404d469f95fd7dd89da694c0.jpg设计模式是软件工程中一种常见的解决方案,它并不是直接完成代码的编写,而是提供了一种在特定上下文中反复出现的问题的通用设计方案。这些方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。在Java编程中,设计模式也扮演着举足轻重的角色。以下是对几种常用设计模式的简要介绍:

 

 

1.单例模式(Singleton Pattern)

 

单例模式的核心思想是确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这在需要控制资源访问或实现全局状态管理的场景中非常有用。例如,数据库连接池、线程池等常常采用单例模式。

 

2.工厂模式(Factory Pattern)

 

工厂模式通过定义一个创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。这在需要根据不同情况创建不同对象时非常有用,例如,根据用户输入或配置文件来创建不同的产品对象。

 

3.抽象工厂模式(Abstract Factory Pattern)

 

抽象工厂模式提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。这是工厂模式的“升级版”,它创建的是对象家族,而非单个对象。这在需要创建多个相互关联或依赖的对象时非常有用。

 

4.建造者模式(Builder Pattern)

 

建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这类似于在工厂模式中创建对象,但建造者模式更关注于如何一步一步地构建一个复杂对象。这在需要创建复杂对象,且构建过程可能有所不同时非常有用。

 

5.原型模式(Prototype Pattern)

 

原型模式通过复制现有的实例来创建新的对象。这在需要创建大量相同或相似对象,且对象的创建过程较为复杂或耗时较长时非常有用。例如,在图形编辑器中,通过复制现有的图形对象来创建新的图形对象。

 

6.适配器模式(Adapter Pattern)

 

适配器模式将一个类的接口转换成客户希望的另外一个接口。这使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。这类似于一个“翻译官”,它帮助不同的系统或组件之间进行通信。

 

7.装饰器模式(Decorator Pattern)

 

装饰器模式动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。这类似于给一个人穿衣服,不同的衣服(即装饰器)可以给这个人增加不同的属性或功能。

 

8.代理模式(Proxy Pattern)

 

代理模式为其他对象提供一种代理以控制对这个对象的访问。这类似于一个“经纪人”或“中介”,它代表客户与另一个对象进行交互。代理模式在远程代理、虚拟代理、保护代理等方面有广泛的应用。

 

9.观察者模式(Observer Pattern)

 

观察者模式定义对象间的一种一对多的依赖关系,当一个对象改变状态时,其所有依赖者都会收到通知并自动更新。这类似于新闻订阅系统,当有新新闻发布时,所有订阅了该新闻的用户都会收到通知。

 

10.策略模式(Strategy Pattern)

 

策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互换。策略模式使得算法可独立于使用它的客户端而变化。这类似于在购物时选择不同的支付方式(如信用卡支付、支付宝支付等),每种支付方式都是一个策略。

 

这些设计模式并不是孤立的,它们可以相互组合和嵌套使用,以构建更加复杂和灵活的软件系统。掌握这些设计模式不仅有助于提高代码的可读性和可维护性,还能帮助开发人员更好地应对各种软件开发挑战。

 


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

相关文章

uni-app(优医咨询)项目实战 - 第7天

学习目标: 能够基于 WebSocket 完成问诊全流程 能够使用 uniCloud 云存储上传文件 能够完成查看电子处方的功能 能够完成医生评价的功能 一、问诊室 以对话聊天的方式向医生介绍病情并获取诊断方案,聊天的内容支持文字和图片两种形式。 首先新建一…

sqlserver镜像设置

本案例是双机热备,只设置主体服务器(主)和镜像服务器(从),不设置见证服务器 设置镜像前先检查是否启用了 主从服务器数据库的 TCP/IP协议 和 RemoteDAC (1)打开SQL Server配置管理器…

vscode实用插件(持续更新)

目录 Git History Diff Git Graph Error Lens Git History Diff 用于将当前分支的某个文件夹与远程分支的相同文件夹做对比,方便代码评审!解决了为了一个问题而多次commit,导致代码不好评审,即不晓得和远程分支相比&#xff0…

无需配置设备,借助GitHub快速编译项目并直接运行!

引言 你是否曾经有过类似的烦恼,发现了一个有趣的项目,想要测试一下,但是自己的设备没有对应的开发环境或者受制于自己的设备,不想或者不能去配置对应的开发环境,应该怎么办呢?这种情况下,其实…

.net core 的算法与数据结构

Python基础 Python是一种广泛使用的高级编程语言,以其简洁易读的语法和强大的功能而闻名。自1991年发布以来,Python作为一种通用编程语言,已经在数据分析、人工智能、Web开发、自动化脚本及许多其他领域取得了巨大的成功。本文章将为您介绍P…

接口Mock技术介绍

相信学习过程序设计的读者朋友们,一定对“桩(Stub)”这个概念并不陌生。它是指用来替换一部分功能的程序代码段。桩程序代码段可以用来模拟已有程序的某些功或者是将实现的系统代码的一种临时替代方法。插桩方法被广泛应用于开发和测试工作中…

UE5材质节点Panner

Panner平移节点,可以让贴图动起来,快捷键是P,Speed的数值大小就是贴图移动的快慢,x和y是方向 这个节点可以用来做,传送带,护盾,河流,岩浆,瀑布等 制作岩浆流动效果 创建…

从零开始开发纯血鸿蒙应用之UI封装

从零开始开发纯血鸿蒙应用 一、题引二、UI 组成三、UI 封装原则四、实现 lib_comps1、封装 UI 样式1.1、attributeModifier 属性1.2、自定义AttributeModifier<T>类 2、封装 UI 组件 五、总结 一、题引 在开始正文前&#xff0c;为了大家能够从本篇博文中&#xff0c;汲…