<th id="wu2k2"><s id="wu2k2"></s></th> <blockquote id="wu2k2"></blockquote>
  • <tr id="wu2k2"></tr>
  • <samp id="wu2k2"><tbody id="wu2k2"></tbody></samp><samp id="wu2k2"><tbody id="wu2k2"></tbody></samp>
  • 更多精彩內容,歡迎關注:

    視頻號
    視頻號

    抖音
    抖音

    快手
    快手

    微博
    微博

    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 国产精品美女免费视频观看| 中文字幕动漫精品专区| 国产69精品久久久久999三级| 久久精品国产亚洲AV麻豆网站| 国产在线精品国自产拍影院| 国产在线观看精品香蕉v区| 精品久久久久中文字幕日本| 国产成人无码精品一区二区三区| 国产精品嫩草影院一二三区| 国产精品久久久久久久小说| 91久久精品视频| 99国产精品99久久久久久| 野狼第一精品社区| 精品久久久久久久久久久久久久久| 国产高清在线精品二区| 亚洲国产精品精华液| 揄拍自拍日韩精品| 99精品视频在线在线视频观看| 国产一区二区精品| 国语自产精品视频| 精品国产国产综合精品| 亚洲第一永久AV网站久久精品男人的天堂AV | 色婷婷噜噜久久国产精品12p| 久久久久久精品久久久| 精品久久久久久婷婷| 亚洲午夜国产精品无卡| 中国精品videossex中国高清 | 精品无码国产自产在线观看水浒传 | 国内精品卡1卡2卡区别| 精品久久人人做人人爽综合| 伊人精品久久久久7777| 国产一区二区精品久久91| 国产精品酒店视频| 国产精品妇女一二三区| 精品国产av一二三四区| WWW国产精品内射熟女| 精品国产精品久久一区免费式| 精品国产乱码久久久久久鸭王1| 国内揄拍国内精品对白86| 亚洲中文字幕一区精品自拍| 国产精品国产三级国产AV麻豆 |