静态代理
package Proxy.staticProxy;
public interface Star {
void confer();
void signContract();
void changGe();
}
package Proxy.staticProxy;
public class RealStar implements Star{
@Override
public void confer() {
System.out.println("还想");
}
@Override
public void signContract() {
System.out.println("本人已经签订合同");
}
@Override
public void changGe(){
System.out.println("唱大王来巡山");
}
}
package Proxy.staticProxy;
public class ProxyStar implements Star{
private Star star;
public ProxyStar(Star star) {
super();
this.star = star;
}
@Override
public void confer() {
System.out.println("代理人负责xxx");
}
@Override
public void signContract() {
// TODO Auto-generated method stub
System.out.println("代理人拟写合同");
}
@Override
public void changGe() {
star.changGe();
}
}
package Proxy.staticProxy;
public class Client {
public static void main(String[] args) {
Star s = new RealStar();
Star pro = new ProxyStar(s);
pro.confer();
pro.changGe();
}
}
动态代理
package Proxy.dynamic;
public interface Star {
void confer();
void signContract();
void changGe();
}
package Proxy.dynamic;
public class RealStar implements Star{
@Override
public void confer() {
System.out.println("还想");
}
@Override
public void signContract() {
System.out.println("本人已经签订合同");
}
@Override
public void changGe(){
System.out.println("唱大王来巡山");
}
}
package Proxy.dynamic;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class StarHandler implements InvocationHandler{
Star realStar;
public StarHandler(Star realStar) {
super();
this.realStar = realStar;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
method.invoke(realStar, args);
return null;
}
}
package Proxy.dynamic;
import java.lang.reflect.Proxy;
public class Client {
public static void main(String[] args) {
Star realStar =new RealStar();
StarHandler handle = new StarHandler(realStar);
Star proxy =(Star) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[] {Star.class}, handle);
proxy.changGe();
}
}