设计模式在Spring中的应用

简介: 设计模式在Spring中的应用

设计模式在Spring中的应用

设计模式(design pattern)是对面向对象设计中反复出现的问题的解决方案。这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。这个术语的含义还存有争议。算法不是设计模式,因为算法致力于解决问题而非设计问题。设计模式通常描述了一组相互紧密作用的类与对象。设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。设计模式还为软件重构提供了目标。

目前出版了许多关于设计模式的书籍,我最喜欢的一本就是《大话设计模式》,该书形象生动的阐述了设计模式,今天我们以Spring为例探讨一下设计模式在Spring框架中的应用,Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称业界标杆,而Spring中常用的设计模式达到九种,我们一起来看一下

1.  简单工厂

简单工厂又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种设计模式之一,简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个类

Spring中的BeanFactory就是简单工厂模式的体现。

2.  工厂方法

通常由应用程序直接使用new创建新对象,为了将创建对象和使用解耦,采用工厂模式将对象的创建和初始化交给工厂对象。

一般情况下,应用程序有自己的工厂对象来创建bean,如果将应用程序自己的工厂对象交给Spring管理,那么Spring管理的就不是普通bean而是工厂bean,例如Spring中的FactoryBean就是典型的工厂方法模式

3.  单例模式

单例模式就是保证一个类仅有一个示例,并提供一个访问它的全局访问点。

Spring中提供了BeanFactory,其给我们创建的对象默认是单例的,但是可以通过scope属性来指定是单例还是多例,如果是singleton则为单例,prototype则为多例。

4.  适配器(Adapter

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

Spring中将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

5.  包装器(Decorator

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

Spring 中用到的装饰器模式在类名上有两种表现:一种是类名中含有 Wrapper,另一种是类名中含有Decorator

6.  代理模式

SpringAOP中,使用Advice(通知)来增强被代理类的功能,Spring实现这一AOP功能就用到了代理模式,底层实现有2种方式,一种是基于JDK动态代理,一种是基于CGLib字节码生成技术代理,SpringAOP对类进行方法级别的切面增强,在生成被代理类的代理类方法前设置拦截器,通过执行拦截器中的内容增强代理方法功能,实现面向切面编程

SpringAOP一般用于记录日志,权限控制,缓存优化,事务管理

7.  观察者模式(Observer

定义对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新

SpringObserver模式常用的地方是listener的实现,例如ApplicationListener

8.  策略模式(Strategy

定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。

Spring中在实例化对象的时候用到Strategy模式

9.  模板方法(Template Method

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

Spring中的JdbcTemplate就用到了模板方法。

 

 

相关文章
|
1月前
|
设计模式 编解码 C++
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(一)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
50 0
|
30天前
|
安全 Java 数据安全/隐私保护
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
【深入浅出Spring原理及实战】「EL表达式开发系列」深入解析SpringEL表达式理论详解与实际应用
67 1
|
1月前
|
设计模式 存储 缓存
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(二)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
27 0
|
1天前
|
设计模式 消息中间件 Java
Java 设计模式:探索发布-订阅模式的原理与应用
【4月更文挑战第27天】发布-订阅模式是一种消息传递范式,被广泛用于构建松散耦合的系统。在 Java 中,这种模式允许多个对象监听和响应感兴趣的事件。
8 2
|
1天前
|
设计模式 算法 Java
Java 设计模式:探索策略模式的概念和实战应用
【4月更文挑战第27天】策略模式是一种行为设计模式,它允许在运行时选择算法的行为。在 Java 中,策略模式通过定义一系列的算法,并将每一个算法封装起来,并使它们可以互换,这样算法的变化不会影响到使用算法的客户。
6 1
|
2天前
|
设计模式 存储 Java
手写spring第二章-运用设计模式编写可扩展的容器
手写spring第二章-运用设计模式编写可扩展的容器
7 0
|
10天前
|
设计模式 Java 数据库连接
Spring Framework 6 中的设计模式
Spring Framework 6 中的设计模式
21 1
|
10天前
|
设计模式 算法 Java
Java中的设计模式及其应用
【4月更文挑战第18天】本文介绍了Java设计模式的重要性及分类,包括创建型、结构型和行为型模式。创建型模式如单例、工厂方法用于对象创建;结构型模式如适配器、组合关注对象组合;行为型模式如策略、观察者关注对象交互。文中还举例说明了单例模式在配置管理器中的应用,工厂方法在图形编辑器中的使用,以及策略模式在电商折扣计算中的实践。设计模式能提升代码可读性、可维护性和可扩展性,是Java开发者的必备知识。
|
25天前
|
存储 安全 Java
Spring Security应用讲解(Java案列演示)
Spring Security应用讲解(Java案列演示)
|
30天前
|
Prometheus 监控 Cloud Native
Spring Boot 应用可视化监控
Spring Boot 应用可视化监控
18 0