【设计模式】介绍常见的设计模式

news/2025/1/12 22:51:28/

🥰🥰🥰来都来了,不妨点个关注叭!
👉博客主页:欢迎各位大佬!👈

在这里插入图片描述

文章目录

这期内容主要是总结一下常见的设计模式,可能很多小伙伴们对了解,但是说出来总觉得有点不太对劲~ 这里作出以下总结~

✨ 介绍一下常见的设计模式

如果是介绍一下常见的设计模式,可以先举例介绍一下常见的设计模式,然后说一下这些模式的具体应用,如在 Spring 中的应用

  • 单例模式:单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供全局访问点,比如在 Spring 中,所有的 Bean 默认是单例,每个 Bean 只会被创建一次,并且可以在整个应用程序中共享。

  • 代理模式:代理模式是一种结构型设计模式,它允许开发人员在不修改原有的代码情况下,向应用程序中添加新的功能,比如在 Spring AOP 面向切面编程就是使用的代理模式实现的,它允许开发人员在方法调用前后执行一些自定义的操作,如日志记录、权限控制、性能监控等。

  • 工厂模式:工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,使得应用程序可以更加灵活和可维护,比如在 Spring 中,BeanFactory 就是工厂模式的实现,使用它的工厂模式就可以创建出来其他的 Bean 对象。

  • 观察者模式:定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。例如,实现事件驱动、消息传递等功能时,可以使用观察者模式,比如 Spring 事件驱动模型就是观察者模式的实现。

  • 策略模式:策略模式是一种行为设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户,比如 Spring 中的框架加载。

  • 装饰器模式:装饰器模式是一种结构型模式,允许向一个现有的对象添加新的功能,同时又不改变其结构。创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能,灵活的替代继承的方式来扩展功能。比如 Spring MVC 的拦截器 Interceptor 可以看作是一种装饰器模式的应用。

  • 适配器模式:适配器模式是一种结构型设计模式,它允许开发人员将一个类的接口转换成另一个类的接口,以满足客户端的需求。比如在 Spring 中,适配器模式常用于将不同类型的对象转换成统一的接口,比如 Servlet API 转换成 Spring MVC 的控制器接口。

  • 模版方法模式:模版方法模式是最常用的设计模式之一,它是指定义一个操作算法的骨架,而将一些步骤的实现延迟到子类中去实现,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。此模式是基于继承的思想实现代码复用的。比如 MyBatis 中的典型代表 BaseExecutor,在 MyBatis 中 BaseExecutor 实现了大部分 SQL 执行的逻辑。

✨ Spring 中常见的设计模式

如果是介绍 Spring 中常见的设计模式,直接举例说明 Spring 中哪个地方使用了什么设计模式

  • 单例模式:Bean 的行为模式,Bean 默认创建的是单例。Spring 默认将所有 bean 声明为单例,当容器启动时,每个 bean 只会被初始化一次,后续对同一 bean 的所有请求都会返回相同的实例,例如,通过 SingletonBeanRegistry 接口保证单例 bean 在整个应用上下文只存在一个实例。
  • 代理模式:Spring 的实现原理,通过代理模式管理对象 Spring AOP 面向切面编程大量使用了代理模式,它利用 JDK 动态代理 或 CGLIB 库生成代理对象,实现代理功能以添加额外的横切关注点,如事务处理、日志记录、权限控制等。
  • 工厂模式:Spring 通过 BeanFactory 接口及其实现类如 ApplicationContext 等,为应用程序提供了一个统一的 bean 工厂,负责创建和管理各种 bean 对象。
  • 观察者模式:Spring 事件驱动模型实现了观察者模式,通过 ApplicationEventPublisher 发布和监听事件,例如 ContextRefreshedEvent、SessionDestroyedEvent 等。
  • 策略模式:Spring 框架中的资源加载(Resource)就是一个策略模式的例子,根据不同的资源路径,Spring 会选择合适的策略,如ClassPathResource、FileSystemResource 等,进行资源加载。
  • 装饰器模式:Spring MVC 的拦截器 Interceptor 可以看作是一种装饰器模式的应用,它允许我们包装 HandlerExcutionChain,在执行处理器方法前后插入自定义行为。
  • 适配器模式:Spring 通过适配器模式整合不同类型的组件,比如对第三方数据源的连接池,进行适配,使其能够与 Spirng 容器无缝集成。
  • 模版方法模式:在 Spring JDBC 等模块中,提供了如 JdbcTemplate 这样的模板类,它们封装数据访问逻辑,而具体的操作由用户提供的 SQL 来实现。

✨✨✨本期内容到此结束啦~

单例模式可回顾往期内容:【多线程】单例模式


http://www.ppmy.cn/news/1562625.html

相关文章

应急响应之入侵排查(下)

一.进程排查 1.Windows 任务管理器查看 在 Windows 系统中,可通过任务管理器查看进程信息。操作步骤为:在任务管理器界面,于 “查看” 选项中选择 “选择列”,随后添加 “映像路径名称” 和 “命令行”,以此查看更多进…

探索 Oracle 数据库:核心概念与实践指南

Oracle 数据库是业界领先的关系型数据库管理系统 (RDBMS),广泛应用于企业级应用和大型数据处理。本文将深入探讨 Oracle 数据库的核心概念、常用功能以及最佳实践,帮助你更好地理解和使用 Oracle 数据库。 1. Oracle 数据库的核心概念 1.1 体系结构 O…

Android中Activity

一、AndroidManifest中的<activity>标签 <activity>标签在AndroidManifest.xml文件中用于定义和配置应用中的每一个Activity。Activity是Android应用的基本构建块之一&#xff0c;主要负责展示用户界面&#xff0c;并处理用户与之的交互。每个在应用中显示给用户的…

抖音生活服务举办直营服务商年度峰会 服务商支付交易额同比涨85%

1月7日&#xff0c;抖音生活服务在海南三亚举办了“服务无界&#xff0c;卓越领航”直营服务商年度峰会&#xff0c;公布了过去一年在服务商生态建设的举措与成果&#xff0c;并分享了新一年平台在战略经营方向、产品功能升级以及营销拓展等方面的规划布局。同时&#xff0c;为…

spring task使用

Spring Task 简介 Spring Task 是 Spring 框架原生自带的任务调度框架&#xff0c;它犹如一把瑞士军刀&#xff0c;为开发者提供了丰富多样的功能&#xff0c;助力轻松创建和管理定时任务。相较于其他一些第三方任务调度框架&#xff0c;Spring Task 最大的优势在于其与 Sprin…

宝塔安装教程,bt怎么安装 linux

Centos安装脚本 yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 37a09b35 Ubuntu/Deepin安装脚本 wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo b…

Redis 如何解决大 key 问题

前言 嗨&#x1f44b;&#xff0c;大家好&#xff0c;我是雪荷。做为一个后端开发&#xff0c;Redis 是我们经常接触到的一个非关系行数据库。其对我们系统开发和优化有着举足轻重的作用&#xff0c;但是随着业务和用户迅速增长&#xff0c;也会滋生许多的问题&#xff0c;而大…

vscode 无法使用npm, cmd命令行窗口可以正常执行

解决方法&#xff1a; 执行命令获得命令的位置 get-command npm 得到如下 然后删除或者修改 npm.ps1文件 让其不能使用就行。然后重启vscode即可。 pnpm 同理即可 另外加速源 国内镜像源&#xff08;淘宝&#xff09;&#xff1a; npm config set registry https://regist…