设计模式-详细说明装饰器模式设计,保准一听就会,不会你来打我
在MyBatis中对于二级缓存的设计中,我们发现使用了大量的装饰器模式,如执行器是直接查询还是进行缓存,如果缓存的话则定义缓存执行器类,二级缓存类又包装一级缓存类,事务缓存管理器包装事务缓存类,一层包装一层,最终调用到自己包装的那一层,每一层的包装都有自己的业务逻辑实现。
1. 装饰器模式介绍
这就是装饰器模式的设计理念,顾名思义,装饰器,就是装饰不同的类的功能,原有的功能还要继续使用并不影响,在原有的功能之上,去增强一些功能。
听起来很像代理模式哈,但是代理模式使用更复杂的场景,比如,我们对于日志的处理使用AOP的情况较多,一般对于这里的处理是很多的接口都会使用到它,场景不固定,而装饰器主要是继承处理,单独创建类来处理某一特定场景,场景固定,并且适合已经写好了接口功能,需要新功能进行装饰处理这样的场景。
那接下来开始吧,Mybatis有一个场景就是Sql语句的执行器,