Mybatis源码中涉及到的设计模式

通过学习Mybatis源码,在其中用到的两个设计模式:适配器模式和代理模式
适配器模式在Mybatis中的日志操作类源码中使用,在市面上有很多的日志扩展实现,但每个实现(如Log4j,logback,jdk自带的日志包等)的日志级别都不一样,这些是有差异的,而在Mybatis中定义了一些日志规范肯定与这些实现有差异,所以无法直接去调用,所以Mybatis需要一个适配器作为Mybatis规定接口的实现类,在每一个日志包的适配器类中都包含了这些特定日志扩展包对象,在适配器类中实现Mybatis规定的Log接口的方法,在这些方法中去调用各种市面上实现的日志包的方法,从而实现Mybatis对市面上不同的日志扩展包的实现。
而代理模式是代理对象和被代理对象都实现了统一的接口,在代理对象中包含了被代理对象,在代理对象实现接口的方法的时候去调用被代理对象对应的接口方法,可以在其之前做前置增强,后置增强,在main中去调用的时候发现,代理对象和被代理对象都要被暴露出来,把被代理对象传给代理对象的构造器才可以,所以最大的区别就是:在适配器模式中,我们只需要关心适配器接口的调用,从不关心底层到底是哪个实现类(无论是Log4j,Logback等),而代理模式中,我们必须要关心代理对象和被代理对象这两个对象,需要将被代理对象传给代理对象才能实现对被代理对象功能的增强。

发布了227 篇原创文章 · 获赞 77 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/m2606707610/article/details/103397836