//接口编程
Person.java
package com.loosboo.pattern.proxy;
/**
* 接口
*/
public interface Person {
public void sayHello();
public void sayBye();
}
Chinese.java
package com.loosboo.pattern.proxy;
/**
* 实现
*/
public class Chinese implements Person {
public void sayBye() {
System.out.println("再见!");
}
public void sayHello() {
System.out.println("你好!");
}
}
English.java
package com.loosboo.pattern.proxy;
/**
* 实现
*/
public class English implements Person {
public void sayBye() {
System.out.println("GoodBye!");
}
public void sayHello() {
System.out.println("Hello!");
}
}
PersonProxy.java
package com.loosboo.pattern.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
* 代理
*/
public class PersonProxy implements InvocationHandler {
private Object obj;
public PersonProxy() {
}
public PersonProxy(Object obj) {
this.obj = obj;
}
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
method.invoke(obj, args);
return null;
}
}
TestPerson.java
package com.loosboo.pattern.proxy;
import java.lang.reflect.Proxy;
/**
* 测试
*/
public class TestPerson {
public static void main(String[] args) {
Chinese p1 = new Chinese();
English p2 = new English();
Person person1 = (Person) Proxy.newProxyInstance(p1.getClass()
.getClassLoader(), p1.getClass().getInterfaces(),
new PersonProxy(p1));
person1.sayBye();
Person person2 = (Person) Proxy.newProxyInstance(p2.getClass()
.getClassLoader(), p2.getClass().getInterfaces(),
new PersonProxy(p2));
person2.sayBye();
}
}