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