Mybatis中用到至少用到以下設計模式,
- Builder模式,例如SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder;
- 工廠模式,例如SqlSessionFactory、ObjectFactory、MapperProxyFactory;
- 單例模式,例如ErrorContext和LogFactory;
- 代理模式,Mybatis實現的核心,比如MapperProxy、ConnectionLogger,用的jdk的動態代理;還有executor.loader包使用了cglib或者javassist達到延遲加載的效果;
- 組合模式,例如SqlNode和各個子類ChooseSqlNode等;
- 模板方法模式,例如BaseExecutor和SimpleExecutor,還有BaseTypeHandler和所有的子類例如IntegerTypeHandler;
- 適配器模式,例如Log的Mybatis接口和它對jdbc、log4j等各種日志框架的適配實現;
- 裝飾者模式,例如Cache包中的cache.decorators子包中等各個裝飾者的實現;
- 迭代器模式,例如迭代器模式PropertyTokenizer;