【十三】图解mybatis缓存模块之装饰器模式

图解mybatis缓存模块之装饰器模式

简介

之前有写过一篇博客介绍过mybatis的缓存模块设计【九】mybatis 缓存模块设计-CSDN博客

,当时着重讲解的是mybatis种一级缓存和二级缓存,本次博客补充讲解一下装饰器模式的应用,本篇主要分两部分讲解,首先简单讲解一下装饰器模式的示例,然后结合mybatis的真是应用场景进行讲解,这样读者可以先熟悉装饰器模式怎么设计,同时结合真实案例加深理解。

一、装饰器模式

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

装饰器模式通过将对象包装在装饰器类中,以便动态地修改其行为。

这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

装饰器模式类结构如下图所示:

抽象组件(Component) : 可以是一个接口或者抽象类,其充当被装饰类的原始对象,规定了被装饰对象的行为;
具体组件(ConcreteComponent) : 实现/继承Component的一个具体对象,也即被装饰对象;
抽象装饰器(Decorator) : 通用的装饰ConcreteComponent的装饰器,其内部必然有一个属性指向Component抽象组件;其实现一般是一个抽象类,主要是为了让其子类按照其构造形式传入一个Component抽象组件,这是强制的通用行为(当然,如果系统中逻辑单一,并不需要实现许多装饰器,那么我们可以直接省略该类,而直接实现一个具体装饰器(ComcreteDecorator)即可);
具体装饰器(ConcreteDecorator): Decorator的具体实现类,理论上每个ConcreteDecorator都扩展了Component对象的一种功能;

二、mybatis缓存中装饰器模式应用

我们先来看一下缓存模块的类设计,如下图所示:

由上图我们看到了Cache的设计,Cache对应的是抽象组件的角色,翻看源码我们可以看到只有PerpetualCache是具体的实现,这里没有实现抽象装饰器,实现的都是具体装饰器,如下所示:

总结

起初学习设计模式总觉得无用武之地,平常在业务系统开发工作中的确使用场景不多,这样以来久而久之就感觉设计模式离我们很远,后来在工作中也偶尔能够使用到了,另外在阅读优秀的开源项目中发现设计模式应用的很多,这样逐步加深了对设计模式的理解,所以我们平常使用不多的情况下可以找开源项目中的应用示例来加深对设计模式的理解。

相关推荐
接着奏乐接着舞。3 分钟前
【2026】73道Redis 常见面试题与参考答案
数据库·redis·后端·缓存
Seraphina367 小时前
记一次实验:利用缓存服务器规范化技术进行网页缓存欺骗
经验分享·笔记·网络安全·缓存
草莓熊Lotso1 天前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
云存储小天使2 天前
训练效率提升50%以上:GooseFS 写缓存及其在具身智能数据处理中的应用
缓存·腾讯云·对象存储·goosefs
程序员夏洛2 天前
Redis 数据过期后的删除策略是什么?
数据库·redis·缓存
鱼鳞_2 天前
热门八股-Redis
数据库·redis·缓存
hweiyu002 天前
Redis命令:MIGRATE
redis·缓存
A.说学逗唱的Coke2 天前
【人工智能专题】Redis 杀进 AI 数据层:向量搜索、语义缓存与 Agent 记忆工程从入门到踩坑
人工智能·redis·缓存
XiYang-DING2 天前
地图城市缓存优化:ApplicationReadyEvent + Caffeine + Redis + Redisson 分布式锁
redis·分布式·缓存
智购科技无人售货机厂家3 天前
2026自动售货机制冷系统维护指南:从散热器清洁到压缩机换油的工程实践~YH
运维·redis·物联网·缓存·架构