public Object bind(Object origin){ return Proxy.newProxyInstance(origin.getClass().getClassLoader(),origin.getClass.getInterfaces(),this); } }
public class Test{ public static void main(String[] args){ BusinessInterface businessObj = new BusinessObject(); LoggerProxy dynamicProxy = new LoggerProxy(businessObj ); BusinessInterface proxyObj = (BusinessInterface)dynamicProxy.bind(businessObj); proxyObj.processBusiness(); //print result //method before........ //business logic...... //method after....... } }
11、责任链模式 //抽象类中包含一个具体子类对象的引用 public abstract class Handler{ //下一个处理者 protected Handler successor; //处理请求 public void handleRequest(Request request){ //如果下家处理者存在 if(successor!=null){ successor.next(); } }
public Handler getSuccessor(){ return successor; }
public void setSuccessor(Handler successor){ this.successor = success }
//具体处理者持有下家处理者的引用 public class ConcreteHandlerA{
public ConcreteHandlerA(Handler successor){ this.setSuccessor(successor); }
public absract void handleRequest(Request request){ if(request.type=="1"){ //....处理请求 }else{ //交给下家管理者 getSuccessor().handleRequest(request); } } }
//具体处理者持有下家处理者的引用 public class ConcreteHandlerB{
public ConcreteHandlerB(Handler successor){ this.setSuccessor(successor); }
public absract void handleRequest(Request request){ if(request.type=="2"){ //处理请求 }else{ //如果下家处理者存在,交给下家管理者 getSuccessor().handleRequest(request); } } }
//具体处理者持有下家处理者的引用 public class ConcreteHandlerC{
public ConcreteHandlerC(Handler successor){ this.setSuccessor(successor); }
public absract void handleRequest(Request request){ if(request.type=="3"){ //处理请求 }else{ //如果下家处理者存在,交给下家管理者 (责任编辑:JavaVideo) |
