<sup id="m40ya"></sup>
  • 
    
  • <kbd id="m40ya"></kbd>
    <samp id="m40ya"></samp>
    <ul id="m40ya"></ul>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    java delegate

    文檔

    java delegate

    delegate是一種設計模式,即一個對象不能完成的事情,委托另一個對象幫其完成,delegate定義代理為屬性時,使用weak修飾,避免造成對象的循環引用,引起內存泄露。
    推薦度:
    導讀delegate是一種設計模式,即一個對象不能完成的事情,委托另一個對象幫其完成,delegate定義代理為屬性時,使用weak修飾,避免造成對象的循環引用,引起內存泄露。

    java delegate是什么,讓我們一起了解一下?

    delegate是一種設計模式,即一個對象不能完成的事情,委托另一個對象幫其完成,delegate定義代理為屬性時,使用weak修飾,避免造成對象的循環引用,引起內存泄露。

    如何在java中定義delegate代理?

    在java中定義delegate代理需要進行實現的方式。代碼示例如下:

    -?(void)orderTickerForMe
    {
    ?????????NSLog(@"叫人幫我訂票");
    ?????????
    ?????????if?(self.tickerDelegate?&&?[self.tickerDelegate?respondsToSelector:@selector(orderTicker)])
    ?????????{
    ?????????????[self.tickerDelegate?orderTicker];
    ?????????}
    }
    -?(void)getTickerForMe
    {
    ?????????NSLog(@"叫人幫我取票");
    ?????????
    ?????????if?(self.tickerDelegate?&&?[self.tickerDelegate?respondsToSelector:@selector(getTicker)])
    ?????????{
    ?????????????[self.tickerDelegate?getTicker];
    ?????????}
    }

    那我們在使用時應該注意什么?

    1、導入該對象的頭文件。

    2、實例化該對象。

    3、設置該對象的代理。

    4、添加該對象的協議。

    5、實現該對象的代理方法。

    實戰操作:

    因為在java中就沒有delegate這個字段了,所以要實現,不過也不是很復雜。

    1、首先定義一個interface

    //?觀察者
    public?interface?IConnectEventObserver
    {
    //?接受到一個包
    public?void?OnRecvANetworkPacket(ConnectPacket?packet);
    }

    2、然后定義一個虛類,在里面定義通知對象。

    //?通知者
    public?abstract?class?ConnectEventINotifier?{
    protected?ArrayList?observerList?=?new?ArrayList();
    /**
    *?新增一個observer
    *?@param?observer?添加的觀察者
    *?@return?是否添加成功/新添加
    */
    public?boolean?AddObserver(IConnectEventObserver?observer){
    if(observer?==?null)
    {
    throw?new?NullPointerException();
    }
    if(?observerList.indexOf(observer)>=?0){
    //?重復添加觀察者
    return?false;
    }
    observerList.add(observer);
    return?true;
    }
    /**
    *?刪除一個observerList
    *?@param?observer
    *?@return?是否刪除成功,如果失敗,代表這個觀察者并沒有注冊
    */
    public?boolean?RemoveObserver(IConnectEventObserver?observer){
    if(observer?==?null){
    throw?new?NullPointerException();
    }
    int?observerIndex?=?observerList.indexOf(observer);
    if(?observerIndex>=?0){
    observerList.remove(observerIndex);
    return?true;
    }
    return?false;
    }
    /**
    *?通知所有觀察者
    *?@param?packet
    *?@return
    */
    protected?boolean?NotifyAllObserver(ConnectPacket?packet){
    for(IConnectEventObserver?observer?:?observerList)?{
    observer.OnRecvANetworkPacket(packet);
    }
    return?true;
    }
    }

    以上就是小編今天的分享了,希望可以幫助到大家。

    文檔

    java delegate

    delegate是一種設計模式,即一個對象不能完成的事情,委托另一個對象幫其完成,delegate定義代理為屬性時,使用weak修飾,避免造成對象的循環引用,引起內存泄露。
    推薦度:
    為你推薦
    資訊專欄
    熱門視頻
    相關推薦
    java調用c++接口 java調用c++ java獲取絕對值 java delete java調用asmx接口 java dependency java dev java fastdfs java development java dict java fastjson java feign java divide java field java field獲取值 java dockerfile java file.exists() java fileinputstream java findfirst java flatmap java decodeuri java decode java調python java decaf java讀取本地excel java讀取json java dataset java規則引擎 java dataframe java表單校驗 java獲得當前路徑 java dashboard java獲取隨機數 java daemon java獲取隨機字符串 java ctp java獲取運行時間 java cssbox java獲取路徑 java獲取請求域名
    Top 国产免费伦精品一区二区三区| 精品亚洲成A人无码成A在线观看| 国产综合色香蕉精品五月婷| 久久亚洲国产成人精品无码区 | 国产精品无套内射迪丽热巴| 国产成人精品18| 久久久久亚洲精品影视| 国产区精品福利在线观看精品| AV天堂午夜精品一区二区三区| 精品无码人妻一区二区三区| 9久9久热精品视频在线观看| 国产精品视频李雅| 99视频精品国在线视频艾草| 久久免费视频精品 | 亚洲精品国产精品乱码不卡√| 色婷婷99综合久久久精品| 亚洲精品美女久久久久| 日韩精品成人一区二区三区| 国产观看精品一区二区三区 | 国产精品国产三级国产av品爱网| 偷拍精品视频一区二区三区| 亚洲精品无码日韩国产不卡av| 精品无码一区二区三区爱欲| 精品精品国产自在久久高清| 国产91在线精品| 精品99在线观看| 成人国产精品一区二区网站公司 | 2022国产成人精品福利网站| 久久精品免费一区二区三区| 精品乱子伦一区二区三区| 国产av一区二区精品久久凹凸| 色婷婷精品大在线视频| 麻豆国产精品有码在线观看| 欧洲成人午夜精品无码区久久| 最新国产精品拍自在线播放| 九九线精品视频在线观看| 亚洲国产精品自产在线播放| 国产av永久精品无码| 国产成人综合日韩精品婷婷九月 | 国产亚洲蜜芽精品久久| 精品72久久久久久久中文字幕 |