平时都有使用哪些spring中的模式

这个一直都想写,之前一直没有时间。后来想写的时候又忘了,趁着最近复习,赶紧补上。()中的都是个人想法

(1)工厂模式:Spring使用工厂模式,通过BeanFactory(BeanFactory和FactoryBean的区别,后面有空再找机会写)和ApplicationContext来创建对象

(这个应该不用多说了,就是开始的时候初始化,把@Controller、@Service、@Repository 加载到工厂中,需要的时候帮忙创建。)

(2)单例模式:Bean默认为单例模式,也可以用多例。

(不过用多例是极端情况,内存够。又是老代码的单例不想动的时候才用多例,不然都是单例)

(3)策略模式:例如Resource的实现类,针对不同的资源文件,实现了不同方式的资源获取策略(这个可以不用写大量的if else ,个人比较喜欢用,特别是获取的数据比较多,需要并发时用,比较爽)

(4)代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术

(平时的代理模式可以和策略模式合起来用,会方便一些。这个就看个人了)

(5)模板方法:可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中,用来解决代码重复的问题。比如RestTemplate, JmsTemplate, JpaTemplate(典型的是在简单的增删改查逻辑中,增的对象,和修改的对象一般都是差不多的。一般是修改的对象比新增的对象多了个id)

(6)适配器模式:Spring AOP的增强或通知(Advice)使用到了适配器模式,Spring MVC中也是用到了适配器模式适配Controller

(其实就是封装第三方,或者底层接口的方式。对了顺便要了解

@Before,前置通知

@After(finally), 后置通知,方法执行完之后

@AfterReturning,返回通知,成功执行之后

@AfterThrowing,异常通知,只有抛出异常之后执行

@Around,环绕通知)

(7)观察者模式:Spring事件驱动模型就是观察者模式的一个经典应用。

(一般配合消息中心使用,一边生产,一边消费。经常用在数据导入,担心缓存泄露。数据一份一份生产,然后下面一份一份的消费。这样不会被压爆缓存,然后其中一份报错,不影响其他的导入)

(8)桥接模式:可以根据客户的需求能够动态切换不同的数据源。比如我们的项目需要连接多个数据库,客户在每次访问中根据需要会去访问不同的数据库

(这个了解spi机制就知道了,jdk和dubbo 的spi区别如果了解,就了解了。不然说多了,就更不懂了。这个一般在架构设计的时候使用,貌似不常用。不过最近经常看到,就写上来了)

这是一个典型的策略+工厂模式

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值