zoukankan      html  css  js  c++  java
  • java反射系列八之AOP

    package AOP;
    
    import java.lang.reflect.InvocationHandler;
    import java.lang.reflect.Method;
    import java.lang.reflect.Proxy;
    
    interface Human{
        void info();
        void fly();
    }
    
    class SuperMan implements Human{
        @Override
        public void info() {
            System.out.println("我是超人");
        }
        public void fly() {
            System.out.println("I believe that I can fly!");
        }
    }
    
    class HumanUtil{
        public void method1() {
            System.out.println("=====方法一======");
        }
        public void method2() {
            System.out.println("=====方法二======");
        }
    }
    
    class MyInvocationHandler implements InvocationHandler{
        //被代理对象的声明
        Object obj;
        
        public void setObject(Object obj) {
            this.obj=obj;
        }
        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            HumanUtil h = new HumanUtil();
            h.method1();
            
            Object returnValue = method.invoke(obj, args);
            
            h.method2();
            return returnValue;
        }
        
    }
    //动态的创建一个代理类的对象
    class MyProxy{
        public static Object getProxyInstance(Object obj) {
            MyInvocationHandler hander = new MyInvocationHandler();
            hander.setObject(obj);
            return Proxy.newProxyInstance(obj.getClass().getClassLoader(),
                    obj.getClass().getInterfaces(), hander);
        }
    }
    public class TestAop {
        public static void main(String[] args) {
            //创建一个被代理类的对象
            SuperMan man = new SuperMan();
            //返回一个代理类的对象
            Object obj = MyProxy.getProxyInstance(man);
            Human hu = (Human)obj;
            hu.info();
            System.out.println();
            hu.fly();
        }
    }

  • 相关阅读:
    用小百合学python
    驱动对象 设备对象 设备栈 乱杂谈
    [转]很经典的http协议详解
    利用VMWare和WinDbg调试驱动程序
    GCC基础
    史上最著名的10个思想实验 (转)
    windows XP下驱动开发环境设置(DDK+VC6.0)
    守护进程
    驱动SYS开发总结
    ASP.NET学习笔记1
  • 原文地址:https://www.cnblogs.com/zjm1999/p/10345032.html
Copyright © 2011-2022 走看看