1- 反射:通过反射可以获取任意一个类的所有属性和方法,并且可以调用这些属性和方法
优点 | 可以让代码更加灵活、为各种框架提供开箱即用的功能提供了便利 |
缺点 | 在运行时有了分析操作类的能力,但是也增加了安全问题。比如可以无视泛型参数的安全检查(发生在编译时)。另外,反射的性能也要稍差点。 |
2- 代理:代理模式主要作用是拓展(增强)目标的功能,如图1所示,在目标对象的某个方法执行【前、后】可以增加一些自定义的操作。主要有静态代理和动态代理两类
- 静态代理:对目标对象的每个方法的增强都是手动完成的,非常不灵活,比如借口一旦增加方法,目标对象和代理对象都要进行修改
- 动态代理:我们不需要对每个目标类都单独创建一个代理类,并且也不需要我们必须实现接口,我们可以直接代理实现类,
图1 代理模式的作用
代码详解:待更新