mybatis之装饰者设计模式

前言

mybatis是一款优秀的持久层框架,支持sql,存储过程以及高级映射,也是一款开源框架,源码中使用了多种的设计模式,今天就来讲一个装饰者设计模式

mybatis-装饰者设计模式

在源码的cache中,应用了装饰者设计模式,通过装饰者模式,可以增强cache的功能,比如原来是LruCache,通过FifoCache装饰后,变成拥有Lru和Fifo的功能的cache

Cache接口

所有装饰者都应该继承Cache,拥有Cache的基本功能

在这里插入图片描述

装饰过程

通过BlockingCache和FifoCache,我们可以看出,每个装饰者都有一个构造函数,该构造函数的参数的Cache接口,也就是Cache实例便是被装饰的对象;

装饰的实现是通过重写Cache接口的方法,达到装饰者的功能,比如BlockingCache的getObject,putObject等方法,通过装饰后,变可以带上了lock和unlock的功能;FifoCache的getObject,putObject等方法通过重写后,可以限制元素长度,实现FIFO功能;

原生的Cache(PerpetualCache):

在这里插入图片描述

装饰者BlockingCache:

在这里插入图片描述

装饰者FifoCache:

在这里插入图片描述

示例:

public static void main(String[] args) {
	PerpetualCache cache = new PerpetualCache("原生Cache");
	
	// 在原生Cahce中,增加锁的功能
	Cache blockingCache = new BlockingCache(cache);
	
	// 在blockingCache中,再增加先进先出的功能
	Cache blockingAndFifoCache = new FifoCache(blockingCache);
}

总结

大家是不是学到让原始功能的类不断增强的方法了呢

请大家多多关注微信公众号
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值