对原有系统中的方法进行‘拦截’,在方法执行的前后添加新的处理逻辑。
分析:不是办法的办法就是,对原有的每个方法进行修改,添加上新的逻辑;如果需要拦截的方法比较少,选择此方法到是会节省成本。但是面对成百上千的方法怎么办?此时需要用到动态代理来实现。
场景:例如:对原有的系统添加日志记录、添加性能分析等等。。。
举例:如下,需要对Sleep对象的sleep方法进行“拦截”,并在此方法的执行前后添加新的逻辑。想知道‘睡觉前干了什么?睡觉后干了什么?’
interface Sleep { public void sleep(); }