Spring设计模式
代理模式
代理模式的定义:
为被代理对象提供一个代理对象,并由代理对象控制被代理对象的引用。
为什么要用代理模式?
中介隔离作用:
在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对 象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。
开闭原则,增加功能:
我们可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再 修改委托类,符合代码设计的开闭原则。
三种代理模式
静态代理
jdk动态代理
cblib动态代理:
CGLib采用了非常底层的字节码技术,其原理是通过字节码技术为一个类创建子类,并在子类中采用 方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。
单例模式
单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
单例模式的作用:
一是,解决多线程并发访问的问题。二是节约系统内存,提交系统运行的效率,提高系统性能。
策略模式
定义一系列的算法,把每一个算法封装起来, 并且使它们可相互替换。
把算法或者说行为封装成类,然后不同的算法实现为不同的子类,达到灵活调用的效果。把算法封装在方法中,对外提供了一致的接口。
适配器模式
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
包装器模式
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorator。基本上都是动态地给一个对象添加一些额外的职责。
观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。