作者:妮妮快乐1_514 | 来源:互联网 | 2023-10-12 10:09
装饰者模式与代理模式、适配器模式的区别源码应用IO相关MyBatis与代理模式、适配器模式的区别其实要说装饰者模式的应用场景是什么,从之前的代理模式、适配器模式来讲
与代理模式、适配器模式的区别
其实要说装饰者模式的应用场景是什么,从之前的代理模式、适配器模式来讲更容易入手
其实装饰者模式与代理模式从结构角度讲是没啥区别的,只不过从应用角度讲,代理模式注重控制访问权限,在方法前后加以限制判断。而装饰者模式是重在装饰,也就是对原有方法的拓展、加强、延申。
而适配器模式与这两者的区别亦如是,适配器"代理"某个类,是为了给另一个类做一个转换和适配,而且从设计角度讲,与前两者不同的是,它更多的是一个后置的考虑。
源码应用
因为装饰者模式与上述的代理模式、适配器模式结构上没什么不同,只是应用场景的不同,所以直接拿源码举例可能会更好。
IO相关
MyBatis
MyBatis 中的一段处理缓存的设计 org.apache.ibatis.cache.Cache 类
下面这个是先入先出算法的缓存
还有图中的
LruCache 最近最少使用的缓存
TransactionlCache 事务相关的缓存
当然,从FifoCache与Cache的角度讲,是装饰者模式,从FifoCache、LruCache、TransactionlCache 、Cache结合起来讲,又用到了策略模式。
所以,还是一样的道理,这几个设计模式在使用过程中,很少有单一使用的业务场景。