@[TOC] 日志模块----》 适配器模式+代理模式
#mybatis在目前的java开发中使用非常频繁,所以接下来几篇文章都是介绍Mybatis主要模块相关源码,从源码中我们可以了解到,mybatis可以说是非常合理的运用了设计模式和设计原则,接下来几篇文章主要从mybatis的日志模块,数据源模块,缓存模块,反射模块。
part1:设计原则
谈到设计模式,我们首先想到的就是基本的设计原则:
单一职责原则:
一个类或者一个接口只负责唯一项职责,尽量设计出功能单一的接口;
依赖倒转原则:
高层模块不应该依赖低层模块具体实现,解耦高层与低层。既面向接口编程,当实现发生变化时,只需提供新的实现类,不需要修改高层模块代码;
开放-封闭原则:
程序对外扩展开放,对修改关闭;换句话说,当需求发生变化时,我们可以通过添加新模块来满足新需求,而不是通过修改原来的实现代码来满足新需求;
迪米特法则:
一个对象应该对其他对象保持最少的了解,尽量降低类与类之间的耦合度;
里氏代换原则:
所有引用基类(父类)的地方必须能透明地使用其子类的对象;
接口隔离原则:
客户端不应该依赖它不需要的接口,一个类对另一个类的依赖应该建立在最小的接口上;
part2:日志模块-适配器模式
首先MyBatis作为一个开源工具,它在实现的时候,就需要考虑这个工具的基本需求:
1.MyBatis没有提供日志的实现类,需要接入第三方的日志组件,但第三方日志组件都有各自的Log级别,且各不相同,而MyBatis统一提供了trace、debug、warn、error四个级别;
2.自动扫描日志实现,并且第三方日志插件加载优先级如下:slf4J → commonsLoging → Log4J2 → Log4J → JdkLog;
3.日志的使用要优雅的嵌入到主体功能中;
我们通过mybatis的基本功能需求,就可以了解到,要实现上面的需求,有一种设计模式就是很适合这种需求-----》**适配器模式**
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁,将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的