# 基于装饰模式设计多级缓存 ## 回顾多级缓存基本概念 在实际开发项目,为了减少数据库的访问压力,我们都会将数据缓存到内存中 比如:Redis(分布式缓存)、EHCHE(JVM内置缓存). 例如在早起中,项目比较小可能不会使用Redis做为缓存,使用JVM内置的缓存框架, 项目比较大的时候开始采用Redis分布式缓存框架,这时候需要设计一级与二级缓存。 ## 装饰模式基本的概念 不改变原有代码的基础之上,新增附加功能 每次新增的功能都要添加一个接口类 ![img](assets/clip_image002.jpg) ## 装饰模式应用场景 多级缓存设计、mybatis中一级与二级缓存、IO流 只要从容器中拿出的对象,他会拥有所有容器对象的引用 ## 装饰者模式定义 (1)抽象组件: 定义一个抽象接口,来规范准备附加功能的类 (2)具体组件:将要被附加功能的类,实现抽象构件角色接口 (3)抽象装饰者:持有对具体构件角色的引用并定义与抽象构件角色一致的接口 (4)具体装饰:实现抽象装饰者角色,负责对具体构件添加额外功能。 ## 装饰与代理区别 装饰模式对我们的装饰对象实现增强,而代理模式及对我们目标对象实现增强。