设计模式
1.工厂设计模式
Spring使用BeanFactory,ApplicationContext来创建对象
其中,BeanFactory只有在用到某个bean的时候才会注入,相比ApplicationContext来说会占用更少的内存
2.单例设计模式
在我们的系统中,有一些对象我们只需要一个,比如线程池,缓存,对话框
对于频繁使用的对象,可以省略创建对象所花费的时间
new操作的次数减少,对系统内存的使用频率也会降低
插入:prototype作用域和多例模式的区别
相同点:每次获取都是一个新实例
不同点:
prototype是spring的作用域,每次调用都是一个新的实例,同时,Spring只负责创建,调用者负责销毁
多例设计模式 是 开发者定义逻辑,自行管理实例,同时可以有规律的复用实例
前者是固定逻辑
后者是自定义创建逻辑
3.代理设计模式
AOP(面向切面编程)能够与业务无关,需要将业务逻辑共同调用的逻辑或责任封装起来,目的是为了降低模块间的耦合度
如果我们要代理的对象,实现了某个接口。那么Spring AOP会使用JDK Proxy去创建代理对象,对于没有实现接口的对象,使用Cglib生成一个被代理对象的子类作为代理
关于Spring AOP 和 AspectJ AOP 有什么区别?
Spring AOP属于运行时增强,基于代理
AspectJ是编译时增强,基于字节码操作,就是更牛逼
现在Spring AOP已经集成了AspectJ
如果我们切面很多,最好选择AspectJ
4.模版方法
不改变一个算法的结构即可重定义该算法的某些特定步骤的实现方式
Spring中以Template结尾的对数据库操作的类,他们就需要使用模板模式
5.观察者模式
是一种对象行为型模式。
表示一种对象与对象之间具有依赖关系,当一个对象发生改变的时候,依赖这个对象的所有对象也会作出反应
类似于微信公众号的推送信号:
eg:用户关注了某个公众号,每次公众号发布某个消息,他就能够接受到。此时用户就相当于事件监听器
而对于公众号而言,就是事件发布者
对于微信公众号平台,就是事件广播器,负责将事件分发给匹配的监听器
消息内容就是事件
6.适配器模式
将一个接口转化成客户希望的另一个接口
适配器模式可以将接口不兼容的那些类一起工作
类似于旧设备和新系统:
旧打印机只能用老版本驱动
新系统只支持统一接口
适配器就是一个中间层,用来驱动,将老驱动适配为新系统支持的接口