【CODE】动态代理

package pac.testin;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

interface Subject {
    void request();
}

class RealSubject implements Subject {
    public void request() {
        System.out.println("Here RealSubject go!!");
    }
}

class userSide implements InvocationHandler {

    Subject subject = null;

    public userSide(Subject subject) {
        this.subject = subject;
    }

    public Object invoke(Object proxy, Method method, Object[] args)
            throws Throwable {
        System.out.println("Get warm up!!");
        method.invoke(subject, args);
        System.out.println("Just relax!!");
        return null;
    }

    public static void main(String[] args) {
        Subject subject = new RealSubject();
        InvocationHandler handler = new userSide(subject);

        Subject proxy = (Subject) Proxy.newProxyInstance(subject.getClass()
                .getClassLoader(), subject.getClass().getInterfaces(), handler);
        proxy.request();
    }
}

 

posted @ 2013-03-25 19:04  Introspector  阅读(158)  评论(0编辑  收藏  举报