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;