先看一个图
带个 Wrapper的一般就装饰器模式 或者适配器模式
mybatis中的Cache
通过对 Cache的实现进行了进一步包装,就可以实现多种多样的功能,如LRU, FIFO等缓存淘汰策略
点击 SynchronizedCache 可以看到,这个是给 方法加上了 Synchronized , 不同的包装类,实现了对应特定业务的功能
关于适配器模式:
优点:
- 能提高类的透明性和复用,现有的类复用,但不需要改变
- 目标类和适配器类解耦,提高程序的扩展性
- 符合开闭原则
缺点:
- 适配器编写需要全面考虑,可能增加系统的复杂性
- 增加系统代码可读的难度
适配器的种类:
- 对象适配器
- 类适配器
适配器模式可以 结合 门面模式对比看看:
都是对现有的类进行封装, 门面模式是定义一个新的接口
而适配器模式则是复用 接口(旧接口,旧实现)的方法
从粒度上看:
外观模式是用来适配整个子系统,而适配器模式的粒度更小