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

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

文章目录

  • [✨ 介绍一下常见的设计模式](#✨ 介绍一下常见的设计模式)
  • [✨ Spring 中常见的设计模式](#✨ Spring 中常见的设计模式)

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

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

如果是介绍一下常见的设计模式,可以先举例介绍一下常见的设计模式,然后说一下这些模式的具体应用,如在 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 来实现。

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

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

相关推荐
杨充7 小时前
10.可测试性实战设计
设计模式·开源·代码规范
杨充7 小时前
9.重构十二式的实战
设计模式·开源·代码规范
杨充7 小时前
6.设计原则的全景图
设计模式·开源·全栈
杨充7 小时前
2.面向对象的特性
设计模式
杨充7 小时前
7.SOLID原则案例汇
设计模式·开源·全栈
杨充7 小时前
8.反模式与坏味道
设计模式·开源·代码规范
杨充7 小时前
3.接口vs抽象类比较
设计模式
咖啡八杯10 小时前
文法、BNF与AST
java·设计模式·解释器模式·ast·文法
咖啡八杯19 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式