虽然我们都知道有23个设计模式,但是大多停留在概念层面,真实开发中很少遇到。Mybatis源码中使用了大量的设计模式,阅读源码并观察设计模式在其中的应用,能够更深入的理解设计模式。
Mybatis至少遇到了以下的设计模式的使用:
1、Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;
2、工厂模式:例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;
3、单例模式:例如ErrorContext和LogFactory;
4、代理模式:Mybatis实现的核心,比如MapperProxy、ConnectionLogger,用的jdk的动态代理;还有executor.loader包使用了cglib或者javassist达到延迟加载的效果;
5、组合模式:例如SqlNode和各个子类ChooseSqlNode等;
6、模板方法模式:例如BaseExecutor和SimpleExecutor,还有BaseTypeHandler和所有的子类例如IntegerTypeHandler;
7、适配器模式:例如Log的Mybatis接口和它对jdbc、log4j等各种日志框架的适配实现;
8、装饰者模式:例如Cache包中的cache.decorators子包中等各个装饰者的实现;
9、迭代器模式:例如迭代器模式PropertyTokenizer;
10、责任链模式:例如Interceptor、InterceptorChain
接下来挨个模式进行解读,先介绍模式自身的知识,然后解读在Mybatis中怎样应用了该模式。
相关文章
- 12-06SpringBoot工程中的MyBatis框架的整合实现及原理分析
- 12-06Spring框架整合MyBatis框架-使用jndi的方式从服务器中获取datasource资源
- 12-06SpringBoot 集成MyBatis 中的@MapperScan注解
- 12-06如何使用工厂+策略模式 优化多线程中的if else
- 12-06案例分析:设计模式与代码的结构特性
- 12-06设计模式(2)——抽象工厂模式的初步学习与案例演示
- 12-06快速梳理23种常用的设计模式
- 12-06mybatis(1) SqlSessionTemplate是如何保证的MyBatis中的SqlSession的线程安全的?
- 12-06《Spring 手撸专栏》第 3 章:初显身手,运用设计模式,实现 Bean 的定义、注册、获取
- 12-0623中设计模式之-代理模式(1)