装饰模式的应用
装饰模式:动态的为对象增加新的功能,用于代替继承,避免类型体系的快速膨胀(熟悉代码规则的应该都知道,类往上追溯父类,层级不能超过5)。
装饰模式的组成:
1. Component:组件接口
2. ConcreteComponent:真实组件接口,对象可以被真实装饰组件动态添加新的功能
3. Decorator:抽象装饰组件
4. ConcreteDecorator:真实装饰组件,同时也实现组件接口,传入组件接口对象,增加新的功能
MyBatis的缓存功能源码包cache就是装饰模式的应用,下面是缓存包的包结构:
从上面的包结构图可知内容如下:
1. 接口Cache,等价于装饰模式中的组件接口:Component
2. Cache的默认实现类PerpetualCache,等价于装饰模式中的真实组件接口:ConcreteComponent
3. decorators包下的任一类,等价于装饰模式中的真实装饰组件:ConcreteDecorator
我们举简单的先进先出的缓存策略实现类:FifoCache为例,来说明装饰组件具体是怎么完成工作的。