设计模式 | 一句话归纳 | 举例 |
---|---|---|
工厂模式(Factory) | 只对结果负责,封装创建过程。 | SqlSessionFactory、ObjectFactory、MapperProxyFactory |
建造者模式(Builder) | 对象构建和表示分离 | SqlSessionFactoryBuilder、XMLConfigBuilder、XMLMapperBuilder、XMLStatementBuilder、CacheBuilder |
单例模式(Singleton) | 保证独一无二。 | sqlsessionFactory、configuration、ErrorContext、LogFactory |
代理模式(Proxy) | 找人办事,增强职责。 | 绑定:MapperProxy 插件:Plugin Spring集成MyBatis:SqlSessionTemplate的内部类SqlSessionInterceptor MyBatis自带连接池:PooledDataSource管理的PooledConnection 日志打印:ConnectionLogger、StatementLogger |
组合模式(Composite) | 部分-整体的层次结构 | SqlNode和各个子类ChooseSqlNode等 |
模板模式(Template) | 流程标准化,自己实现定制。 | BaseExecutor与子类SimpleExecutor、BatchExecutor、ReuseExecutor BaseTypeHandler |
适配器模式(Adapter) | 兼容转换头。 | logging模块,对于Log4j、JDK logging这些没有直接实现slf4j接口的日志组件,需要适配器 |
装饰器模式(Decorator) | 包装,同宗同源。 | LoggingCache、LruCache等对PerpectualCache的装饰 CachingExecutor对其他Executor的装饰 |
策略模式(Strategy) | 用户选择、结果统一。 | RoutingStatementHandler |
责任链模式(Chain) | 一条链上处理各自任务 | InterceptorChain |