88开源与项目实战之开源实战-开源实战五(中):如何利用职责链与代理模式实现MyBatis Plugin?
上节课,我们对MyBatis框架做了简单的背景介绍,并且通过对比各种ORM框架,学习了代码的易用性、性能、灵活性之间的关系。一般来讲,框架提供的高级功能越多,那性能损耗就会越大;框架用起来越简单,提供越简化的使用方式,那灵活性也就越低。
接下来的两节课,我们再学习一下MyBatis用到一些经典设计模式。其中,今天,我们主要讲解MyBatis Plugin。尽管名字叫Plugin(插件),但它实际上跟之前讲到的Servlet Filter(过滤器)、Spring Interceptor(拦截器)类似,设计的初衷都是为了框架的扩展性,用到的主要设计模式都是职责链模式。
不过,相对于Servlet Filter和Spring Interceptor,MyBatis Plugin中职责链模式的代码实现稍微有点复杂。它是借助动态代理模式来实现的职责链。今天我就带你看下,如何利用这两个模式实现MyBatis Plugin。
话不多说,让我们正式开始今天的学习吧!