java動態代理

來源:互聯網
上載者:User

標籤:

指客戶通過代理類來調用其他對象的方法,並且在程式運行時根據需要動態建立目標類的代理對象。

動態代理使用場合:調試,遠程方法調用

代理設計模式原理:

    使用一個代理將對象封裝起來,然後用該代理對象取代原始對象,任何對原始對象的調用都要通過代理,代理對象決定是否以及何時將方法調用轉到原始對象上。

interface Subject{

void action();

}

//被代理類

class RealSubject implements Subject{

    public void action(){

}

}

//代理類

class MyInvoctionHandler implements InvoicationHandler{

//當通過代理類的對象發起對被重寫的方法的調用時,都會轉化為對如下的invoke方法的調用

    public Object invoidke(Object proxy,Method method,Object[] args)throws Throwable{

    //method方法的傳回值

        Object retrunVal=method.invoke(obj,args);

return returnVal;

}

        Object obj;//嗜血介面的被代理類的對象的聲明    

    //給被代理類的對象執行個體化,返回一個代理類的對象

        public Object blind(Object obj)    {

    this.obj=obj;

return Proxy.newProxyInstance(obj.getClass.getclassLoader,obj.getClass.getInterfaces,this);

}   

 

 return null;

}}

Object obj=代理類.blind(被代理類)

Subject sub=(Subject)obj;//此時sub就是代理類對象

 

sub.action();//轉到對Invacation介面實作類別的invoke方法的調用

java動態代理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.