第三篇,装饰模式

装饰模式基本的概念

不改变原有代码的基础之上,新增附加功能

第三篇,装饰模式

装饰模式应用场景

多级缓存设计、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);

    }

}