一、CC链总结图

二、常见类
1、Map类 --> TransformedMap
Map类是存储键值对的数据结构。 Apache Commons Collections中实现了TransformedMap ,该类可以在一个元素被添加/删除/或是被修改时(即key或value:集合中的数据存储形式即是一个索引对应一个值,就像身份证与人的关系那样),会调用transform方法自动进行特定的修饰变换,具体的变换逻辑由Transformer类定义。
也就是说,TransformedMap类中的数据发生改变时,可以自动对进行一些特殊的变换,比如在数据被修改时,把它改回来; 或者在数据改变时,进行一些我们提前设定好的操作。
至于会进行怎样的操作或变换,这是由我们提前设定的,这个叫做transform。我们可以通过TransformedMap.decorate()方法获得一个TransformedMap的实例

transformedMap.decorate方法:预期是对Map类的数据结构进行转化,该方法有三个参数。
第一个参数为待转化的Map对象
第二个参数为Map对象内的key要经过的转化方法(可为单个方法,也可为链,也可为空)
第三个参数为Map对象内的value要经过的转化方法
2、Transformer接口
Transformer是⼀个接口,它只有⼀个待实现的方法transform:

实现Transformer接口的类:
1.InvokerTransformer
CC链中主要用的的方法之一,传入任意类进行反射调用任何方法。
在实例化这个InvokerTransformer时,需要传入三个参数,第⼀个参数是执行的方法名,第⼆个参数是这个函数的参数列表的参数类型,第三个参数是传给这个函数的参数列表。

2.ChainedTransformer
多个Transformer串起来,形成ChainedTransformer,当触发时,ChainedTransformer可以按顺序调用一系列的变换。

3.ConstantTransformer
把一个对象转化为常量,并返回。他的作⽤其实就是包装任意⼀个对象,在执⾏回调时返回这个对象,进而方便后续操作。

4.InstantiateTransformer
这个Transformer的作用主要是调用构造方法

参考连接:
https://www.cnblogs.com/ssooking/p/5875215.html