Spring中用到的一些设计模式
单例模式:bean默认就是单例
原型模式:指定作用域为prototype
工厂模式:BeanFactory
模板方法:postProcessBeanFactory, onRefresh, initPropertyValue
策略模式: xmlBeanDefinitionReader,PropertiesBeanDefinitionReader
观察者模式: listener, event, multicast
适配器模式: Adapter
装饰器模式: BeanWraper,主要作用是完成bean的属性填充
责任链模式: 使用AOP的时候会先生成一个拦截器链
代理模式:动态代理
委托者模式:delegate
其中,
模板方法和策略模式在表现上比较类似,都是相互之间可以替换
模板方法:在父类中已经定义好了一个算法的框架,允许子类来实现一系列步骤中的特定的一些步骤
策略模式:定义了一组算法,每个算法都被封装,这些算法相互之间可以替换
装饰器模式和代理模式在表现上也有一些类似,都是在一个类实例中持有另一个类实例,两个类具有相同的接口,方法内部会进行调用持有实例的方法
装饰器模式:强调对自身业务功能的扩展和增强,装饰器类和原类是可以相互替换的
代理模式:强调对非业务功能的扩展和增强,强调隐藏原实现,强调的是一个功能的调用,通过代理类来间接调用