读书人

java署理示例

发布时间: 2012-08-31 12:55:03 作者: rapoo

java代理示例
代理模式在Spring中,运用的淋漓精致,面向切面的编程,变得很有趣


假设有个实际书籍供应商,网上书籍供应商,而网上书籍供应商是代理商

package com.study.proxy;

public interface Subject {

public void sailBook();
}


public class RealSubject implements Subject {

@Override
public void sailBook() {
System.out.println("卖书");
}

}


public class SubjectHandler implements InvocationHandler {

private Object subject;

public void setSubject(Object subject) {
this.subject = subject;
}

@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
if (subject == null) {
System.out.println("无权");
return null;
} else {
return method.invoke(subject, args);
}

}

}


客户端使用:
package com.study.proxy;

import java.lang.reflect.Proxy;

public class Client {

public static void main(String[] args) {
Subject subject = new RealSubject();
SubjectHandler handler1 = new SubjectHandler();
handler1.setSubject(subject);
SubjectHandler handler2 = new SubjectHandler();
Subject proxySubject1 = (Subject) Proxy.newProxyInstance(
RealSubject.class.getClassLoader(),
RealSubject.class.getInterfaces(), handler1);
Subject proxySubject2 = (Subject) Proxy.newProxyInstance(
RealSubject.class.getClassLoader(),
RealSubject.class.getInterfaces(), handler2);
proxySubject1.sailBook();
proxySubject2.sailBook();
}
}

读书人网 >编程

热点推荐