在线做静态头像的网站,义务教育标准化建设网站,手游源码资源网,厦门seo排名优化方式图解mybatis缓存模块之装饰器模式 简介 之前有写过一篇博客介绍过mybatis的缓存模块设计【九】mybatis 缓存模块设计-CSDN博客
#xff0c;当时着重讲解的是mybatis种一级缓存和二级缓存#xff0c;本次博客补充讲解一下装饰器模式的应用#xff0c;本篇主要分两部分讲解当时着重讲解的是mybatis种一级缓存和二级缓存本次博客补充讲解一下装饰器模式的应用本篇主要分两部分讲解首先简单讲解一下装饰器模式的示例然后结合mybatis的真是应用场景进行讲解这样读者可以先熟悉装饰器模式怎么设计同时结合真实案例加深理解。
一、装饰器模式 装饰器模式Decorator Pattern允许向一个现有的对象添加新的功能同时又不改变其结构。这种类型的设计模式属于结构型模式它是作为现有的类的一个包装。
装饰器模式通过将对象包装在装饰器类中以便动态地修改其行为。
这种模式创建了一个装饰类用来包装原有的类并在保持类方法签名完整性的前提下提供了额外的功能。 装饰器模式类结构如下图所示 抽象组件Component 可以是一个接口或者抽象类其充当被装饰类的原始对象规定了被装饰对象的行为具体组件ConcreteComponent 实现/继承Component的一个具体对象也即被装饰对象抽象装饰器Decorator 通用的装饰ConcreteComponent的装饰器其内部必然有一个属性指向Component抽象组件其实现一般是一个抽象类主要是为了让其子类按照其构造形式传入一个Component抽象组件这是强制的通用行为当然如果系统中逻辑单一并不需要实现许多装饰器那么我们可以直接省略该类而直接实现一个具体装饰器ComcreteDecorator即可具体装饰器ConcreteDecorator Decorator的具体实现类理论上每个ConcreteDecorator都扩展了Component对象的一种功能
二、mybatis缓存中装饰器模式应用 我们先来看一下缓存模块的类设计如下图所示 由上图我们看到了Cache的设计Cache对应的是抽象组件的角色翻看源码我们可以看到只有PerpetualCache是具体的实现这里没有实现抽象装饰器实现的都是具体装饰器如下所示 总结 起初学习设计模式总觉得无用武之地平常在业务系统开发工作中的确使用场景不多这样以来久而久之就感觉设计模式离我们很远后来在工作中也偶尔能够使用到了另外在阅读优秀的开源项目中发现设计模式应用的很多这样逐步加深了对设计模式的理解所以我们平常使用不多的情况下可以找开源项目中的应用示例来加深对设计模式的理解。