第三篇,装饰模式
装饰模式基本的概念
不改变原有代码的基础之上,新增附加功能
装饰模式应用场景
多级缓存设计、mybatis中一级与二级缓存、IO流
装饰者模式定义
(1)抽象组件:定义一个抽象接口,来规范准备附加功能的类
(2)具体组件:将要被附加功能的类,实现抽象构件角色接口
(3)抽象装饰者:持有对具体构件角色的引用并定义与抽象构件角色一致的接口
(4)具体装饰:实现抽象装饰者角色,负责对具体构件添加额外功能。
装饰与代理区别
装饰模式对我们的装饰对象实现增强,而代理模式及对我们目标对象实现增强
这篇文章更容易理解
https://www.cnblogs.com/adamjwh/p/9036358.html
1和2就是普通的接口实现,3是继承或者实现1,然后构造方法传1接口,再在实现方法中用做增强,还会用到2的实现,4是继承3,实现3的方法的时候可以进行增强,然后调用父类的方法
基于Map手写Jvm内置缓存
public class JvmMapCacheUtils { private static HashMap<String, String> cacheMap = new HashMap<String, String>(); public static void putEntity(String key, Object object) { cacheMap.put(key, JSONObject.toJSONString(object)); } public static <T> T getEntity(String key, Class<T> t) { String json = cacheMap.get(key); JSONObject jsonObject = JSONObject.parseObject(json); return JSONObject.parseObject(json, t); } }
|