Mybatis 设计模式
常用设计模式
单例模式
私有构造器, 对外提供实例方法
- ErrorContext
- LogFactory
构造者模式
封装复杂的创建对象的过程, 通过 build 方法生成对象实例
- SqlSessionFactoryBuilder: 构建 SqlSessionFactory 对象
- XMLConfigBuilder: 解析整个Mybatis的配置
- XMLMapperBuilder:解析Mapper映射器
- XMLStatementBuilder:解析增删改查标签
- XMLScriptBuilder:解析动态SQL
工厂模式
通过工厂创建出具体的对象
- SqlSessionFactory
- MapperProxyFactory
- DataSourceFactory
动态代理
Mybatis 中定义方法的时候使用的都是接口的方式,接口是不能进行实例化操作的,因此在使用具体对象的时候需要使用动态代理来创建出具体的代理对象 MapperProxy
装饰者模式
Cache 包下,Cache是一个接口,具体的子类实现是 PertualCache, 在 decorators 包下包含了一系列的其他实现,通过装饰者模式实现的(如:WeakCache / BlockingCache / LruCache / FifoCache)
组合模式
- ChooseSqlNode
- IfSqlNode
模板方法模式
Executor,BaseTypeHandler,IntegerTypeHandler…..
责任链模式
在 plugins 模块中,包含了 interceptor, interceptorChain
适配器模式
日志模块使用适配器模式,各个子包实现
迭代器模式
PropertyTokenizer