对象增强的手段:
继承
装饰者模式
动态代理
继承:
特点:1,增强的内容是死的,不能修改,如果是隐身能力,修改后超人类就成了隐身超人类
2,被增强的对象也是死的,继承超人类,只能增强超人儿子的实力,其本身还是超人分支
装饰者模式:
特点:1,增强的内容是死的,不能修改,如果是隐身能力,修改后超人类就成了隐身超人类
2,被增强的对象是可以切换的,装饰超人,就是隐身超人类,装饰蜘蛛侠,就是隐身蜘蛛侠类,比较灵活
动态代理:
特点:1,增强的内容是是可以切换的(service)任意service
2,被增强的对象是可以切换的(事务处理)
用动态代理就可以把任意的service添加事务处理,这样事务处理代码和Service代码就可以分开写(AOP思想),通过反射原理还能在配置文件中组装
应用场景例如:
1,IO流中的BufferedInputStream:它是装饰流,创建此流需要给其一个底层对象(输入流),不管给它什么输入流,它都会为其添加缓冲区
应用条件例如:当不知道被增强对象的具体类型时,可以使用!
装饰模式使用口诀:
1,是你(实现/继承增强的父类接口/类)还有你(底层对象,即创建要增强的父类型的引用,构造方法中需带参,参数类型为增强的父类型),一切拜托你(其父类型中无需增强的方法保持不变,调用原有方法返回即可。而在要增强的方法里需添加增强的内容)
动态代理: