设计模式与框架源码
2021-04-13 11:00:57 0 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
Spring
Spring中的设计模式
创建型
单例(Singleton)模式
Spring借鉴单例模式思想,但是将所有需要单例的Bean放在工厂的单例池中。在DefaultSingletonBeanRegistry的singletonObjects这个Map中
原型(Prototype)模式
Spring借鉴原型模式思想,但是将所有多实例的的Bean获取,都动态调用工厂进行创建新对象操作
工厂方法(FactoryMethod)模式
Spring的BeanFactory属于工厂方法模式+模板模式
抽象工厂(AbstractFactory)模式
建造者(Builder)模式
aop,建造出增强器的builder
结构型
代理(Proxy)模式
cglib动态代理,Configuration配置类创建的都是代理对象
PostProcessorRegistrationDelegate:代理PostProcessor的执行
DelegatingMessageSource:代理国际化信息的执行
适配器(Adapter)模式
adaptBeanInstance():bean创建完成以后连接Object类型和T类型
桥接(Bridge)模式
分离了工厂(BeanFactory)与工厂功能增强(BeanFactoryPostProcessor),利用PostProcessorRegistrationDelegate连接BeanFactory的初始化过程和BeanFactoryPostProcessor的增强过程
装饰(Decorator)模式
BeanWrapper
BeanHolder
PropertyValue;装饰了属性名和值,增强了利用反射赋值
......
InjectedElement(通过分析所有方法或者属性找到标注@Autowired等注解的,然后封装为IE)
外观(Facade)模式
DispatcherServlet,处理所有请求然后进行匹配映射
享元(Flyweight)模式
Spring是使用享元完成单例模式
使用单例对象池(单例享元池返回组件)
DefaultSingletonBeanRegistry==》singletonObjects
组合(Composite)模式
DOM解析xml的时候,父元素和子元素等属于组合关系
Spring大量都是组件
Spring继承就来做子类对父类的功能增强
Spring大量使用组合,引用一些分离出来的功能
行为型
模板方法(Template Method)模式
Spring的BeanFactory整个都是模板模式
Spring中的层级接口与实现都是模板模式
策略(Strategy)模式
Spring进行xml等资源处理的时候
ResourceLoader代表资源加载器,底层有各种资源器的实现类,来实现不同的资源加载办法,最终加载出Resource
而AbstractApplicationContext作为环境类引用了 ResourcePatternResolver (也是ResourceLoader接口下的),通过创建不同的资源加载策略,而实现不同的加载功能
Spring对Bean进行对象创建的时候
Spring定义了InstantiationStrategy 接口,用来创建bean的对象
SimpleInstantiationStrategy(无参构造器初始化策略)
CglibSubclassingInstantiationStrategy(cglib初始化策略)
AbstractAutowireCapableBeanFactory ,bean工厂在创建bean的时候动态的根据bean是否需要代理而使用不同的策略
Converter:类型转换
底层很多的converter类型转换器
根据当前需要转换的类型决定使用哪个转换器
调用转换器的转换方法
命令(Command)模式
方法封装都算命令模式
职责链(Chain of Responsibility)模式
AOP链式调用
BeanPostProcessor:保存所有的后置处理器,挨个进行执行(for)
状态(State)模式
Tomcat底层、每一个组件都有状态流转的方法
观察者(Observer)模式
ApplicationListener事件监听
中介者(Mediator)模式
迭代器(Iterator)模式
PropertyValues定义了迭代PropertyValue的方法
访问者(Visitor)模式
WebMvcConfigurer就是
备忘录(Memento)模式
状态提取出来进行保存
解释器(Interpreter)模式
Spring解析表达式,${ },迭代解析
Spring的核心流程
1、bean生命周期
2、容器刷新
Spring的工具类
BeanUtils
bean反射常用工具
ReflectionUtils
操作反射工具类
ClassUtils
SpringMVC
MyBatis
分支主题 4
0 条评论
下一页