写点什么

spring 中常见的几种设计模式

作者:想要飞的猪
  • 2022-11-17
    广东
  • 本文字数:808 字

    阅读完需:约 3 分钟

享元模式:


是为了减少 对象的创建,而共用一些已经创建好的对象,减少内存占用和性能提高;


经典案例:Java 中的 Integer 使用了享元模式,-128 - 127 之间不会创建新对象,而是使用的 Integer cache 中的对象;


实现:


public class IntegerFactor{


public static final Integer cache[];
static{
for(i = -128,i<=127;i++){
cache[i+128] = new Integer(i);
}
}
publict static Integer getInstance(int value){
int key = value+128;
if(jey<0 || key >256){
return new Integer(vaule);
}
return cache[key+128];
}
复制代码


}


工厂模式


经典实现:spring 中的 beanFactory,ApplicationContext


模板模式


一个抽象类公开定义了他的方法的方式/模板,它的子类可以按照需求重写实现方法,但是调用将以抽象类中的定义方式进行。
经典实现:spring中源码中的空方法的实现,只要继承当前类,实现方法就可以扩展了
复制代码


单例模式


经典实现:spring 中bean管理创建的对象
单例模式实现方式(线程安全的):
1、饿汉式实现实现方式
2、双检模式实现单例模式(注意要加volatile。不然多线程会出现未初始化对象)
3、内部类实现
4、枚举类实现
复制代码


代理模式


一个类代表另外一个类的功能;


经典案例:


spring中的aop实现;
复制代码


spring 代理分为接口代理与 CGLIB 字节层面代理,当类实现了接口时则使用接口代码的方式,没有实现接口则使用 cglib 代理方式


观察者模式


spring 中的事件驱动模型的实现,spring 中 观察者模式最常用的地方 listener 的实现;


策略模式


不同的策略,使用不同的逻辑处理,
复制代码


经典实现 spring 中的资源加载,根据资源文件的不同来源,使用了不同的方法,如:classPathResource,urlResource,FileSystemResource,策略模式的实现,减少了很多的 if else,也可以说时将 if else 抽象成为了 策略模式


适配器模式


经典实现:spring中的各种adapter 
复制代码


装饰者模式


经典实现:spring中带的Wrapper或者Decorator的都是装饰者模式的实现
复制代码


发布于: 刚刚阅读数: 3
用户头像

还未添加个人签名 2020-06-05 加入

还未添加个人简介

评论

发布
暂无评论
spring 中常见的几种设计模式_设计模式_想要飞的猪_InfoQ写作社区