MyBatis中采用了大量的设计模式,最常用的主要是以下9种:
1.Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;
2.工厂模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;
3.单例模式,例如ErrorContext 和LogFactory;
4.代理模式,MyBatis 实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;还有executor.loader 包使用了cglib或者javassit 达到延迟加载的效果;
5.组合模式,例如sqlNode 和各个子类chooseSqlNode等;
6.模板方法模式,例如BaseExecutor和SimpleExecutor,还有BaseTypeHandler 和所有的子类例如IntegerTypeHandler;
7.适配器模式,例如Log的Mybatis接口,和它对jdbc、log4j等各种日志框架的适配实现;
8.装饰者模式,例如Cache包中的cache.decorators 子包中的各个装饰者的实现;
9.迭代器模式,例如迭代器模式PropertyTokenizer;
接下来挨个对上述九种模式进行详细解读,先介绍模式自身的知识,再解读Mybatis 中如何应用了该模式。
1.Builder 模式