赞
踩
package com.coderbean.proxy.staticProxy;
/**
* Created by Chang on 15/9/27.
*/
public interface Star {
/**
* 面谈
*/
void confer();
/**
* 签合同
*/
void signContract();
/**
*订票
*/
void bookTicket();
/**
* 唱歌
*/
void sing();
/**
* 收尾款
*/
void collectMoney();
}

package com.coderbean.proxy.staticProxy;
/**
* Created by Chang on 15/9/27.
*/
public class RealStar implements Star {
@Override
public void confer() {
System.out.println("RealStar.confer");
}
@Override
public void signContract() {
System.out.println("RealStar.signContract");
}
@Override
public void bookTicket() {
System.out.println("RealStar.bookTicket");
}
@Override
public void sing() {
System.out.println("RealStar.sing");
}
@Override
public void collectMoney() {
System.out.println("RealStar(周杰伦本人).collectMoney");
}
}

package com.coderbean.proxy.staticProxy;
/**
* Created by Chang on 15/9/27.
*/
public class ProxyStar implements Star {
private Star star;
public ProxyStar(Star star) {
this.star = star;
}
@Override
public void confer() {
System.out.println("ProxyStar.confer");
}
@Override
public void signContract() {
System.out.println("ProxyStar.signContract");
}
@Override
public void bookTicket() {
System.out.println("ProxyStar.bookTicket");
}
@Override
public void sing() {
star.sing();
}
@Override
public void collectMoney() {
System.out.println("ProxyStar.collectMoney");
}
}

package com.coderbean.proxy.staticProxy;
/**
* 测试代理模式
* Created by Chang on 15/9/27.
*/
public class Client {
public static void main(String[] args) {
Star real = new RealStar();
Star proxy = new ProxyStar(real);
proxy.confer();
proxy.signContract();
proxy.bookTicket();
proxy.sing();
proxy.collectMoney();
}
}

Star realStar = new RealStar();
StarHandler handler = new StarHandler(realStar);
Star proxy = (Star)Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(),new Class[]{Star.class},handler);
proxy.sing();
package com.coderbean.proxy.dynamicProxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
/**
* Created by Chang on 15/9/27.
*/
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 {
System.out.println("#####");
//可以在这里方便的放置一些处理的代码
method.invoke(realStar,args);
return null;
}
}

package com.coderbean.proxy.dynamicProxy;
import java.lang.reflect.Proxy;
/**
* Created by Chang on 15/9/27.
*/
public class Client {
public static void main(String[] args) {
Star realStar = new RealStar();
StarHandler handler = new StarHandler(realStar);
Star proxy = (Star)Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Star.class},handler);
proxy.bookTicket();
proxy.sing();
}
}

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。