mybatis-3.4.x 设计模式的使用

设计模式概览

行为类
中介者模式
命令模式
备忘录模式
状态模式
策略模式
解释器模式
迭代器模式
观察者模式
访问者模式
模板方法模式
责任链模式
创建类
单例模式
工厂模式
抽象工厂模式
建造者模式
原型模式
结构类
适配器模式
桥接模式
组合模式
装饰模式
门面模式
享元模式
代理模式

mybatis使用到的模式

建造者模式

mybatis中建造者模式用的还是非常之多的

SqlSessionFactoryBuilder 构建 SqlSessionFactory对象
XMLConfigBuilder 构建复杂的Configuration对象
MappedStatement.Builder 构建复杂的MappedStatement对象
。。。
抽象工厂模式
DefaultObjectFactory生产mybatis查询后的实体对象
装饰模式
1.mybatis的执行器Executor 使用的就是装饰模式来增强功能,比如CachingExecutor
2.mubatis的Cache缓存实现,也是使用装饰模式来增强cache的功能,比如BlockingCache,FifoCache,LoggingCache...
代理模式

这个设计模式就用的更加普遍啦

1.mapper接口的使用,用jdk/cglib的动态代理实现
2.懒加载模式使用动态代理,为查询出来的对象增强功能,拦截普通方法的调用,达到懒加载效果
3.plugin的实现
过滤器链模式
plugin 的实现也结合了过滤器链模式,把客户端配置的n个plugin链式的作用在对象上
模板方法模式
  Executor的实现 使用了模板方法模式

  /**
  * 详见BaseExecutor.java  下面都是模板方法,具体实现交给具体子类
  */
  protected abstract int doUpdate(MappedStatement ms, Object parameter)
      throws SQLException;

  protected abstract List<BatchResult> doFlushStatements(boolean isRollback)
      throws SQLException;

  protected abstract <E> List<E> doQuery(MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql)
      throws SQLException;

  protected abstract <E> Cursor<E> doQueryCursor(MappedStatement ms, Object parameter, RowBounds rowBounds, BoundSql boundSql)
      throws SQLException;

策略模式
按照mapper接口对应的操作类型,利用策略模式,路由到正确的操作逻辑上
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值