aop面向切面编程是一种对于面向对象编程(oop)的补充,关注切面,便于处理日志,减少代码的修改,便于自定义个性化的输出。
1.建立一个接口以及它的实现类,在建立一个代理类,所要显示的日志通过代理类来处理,来调用实现类里的方法。
//接口类public interface BankService { public void transfer(String target, String source, BigDecimal money); } //实现类 public class BankServiceImp implements BankService { public void transfer(String target, String source, BigDecimal money) { } }
//代理类public class Objeproxy implements InvocationHandler { private Object target; public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println(method.getName() + "被执行参数如下"); for(Object arg:args) { System.out.println("参数" + arg); } return method.invoke(target, args); } public Object createProxy(Object target) { this.target = target; return Proxy.newProxyInstance(this.getClass().getClassLoader(), target.getClass().getInterfaces(), this); } }
此时便可以直接在主函数中使用代理类来实现输出,通过代理类来调用实现类的方法
//调试函数public static void main(String[] args) { BankService bs = new BankServiceImp(); BankService bsProxy = (BankService) new Objeproxy().createProxy(bs); bsProxy.transfer("張三", "Lisi", new BigDecimal("0.3")); }