37、Spring框架中都用到了哪些设计模式
Spring框架中都用到了哪些设计模式
简单工厂
由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。
- Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获得Bean对象,但是否是在传入参数后创建还是传入参数前创建这个要根据具体情况来定。
工厂方法
- 实现了FactoryBean接口的bean是一类叫做factory的bean,其特点是,spring会在使用getBean()调用获得该bean时,会自动调用该bean的getObject()方法,所以返回的不是factory这个bean,而是这个bean.getObject()方法的返回值。
单例模式:
保证一个类仅有一个实例,并提供一个访问它的全局访问点
- spring对单例的实现: spring中的单例模式完成了后半旬话,即提供了全局的访问点BeanFactory,但没有从构造器级别去控制单例,这是因为spring管理的是任意的java对象。
适配器模式
Spring定义了一个适配接口,使得每一种Controller有一种对应的适配器实现类,让适配器代替Controller执行相应的方法。这样在扩展Controller时,只需要增加一个适配器类就完成了springMVC的扩展了。
装饰器模式
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
- Spring中用到的装饰器模式在类名上有两种表现:一种是类名中含有wrapper,另一种是类名中含有Decorator.
动态代理
- 切面在应用运行的时刻被织入,一般情况下,在织入切面时,AOP容器会为目标对象创建动态的创建一个代理对象。
springAOP就是以这种方式织入切面的。 - 织入:把切面应用到目标对象并创建新的代理对象的过程。
观察者模式
- spring的事件驱动模型他用的是 观察者模式 ,Spring中observer模式常用的地方是listener的实现。
策略模式:
- Spring框架的资源访问Resource接口。该接口提供了更强的资源访问能力,Spring 框架本身大量使用了 Resource接口来访问底层资源。