<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 四虎成人精品在永久在线 | 午夜精品成人毛片| 午夜影视日本亚洲欧洲精品一区| 伊人 久久 精品| 人妻少妇精品久久久久久| 午夜精品久久久久久中宇| 久久精品国产精品亚洲艾草网美妙| 狠狠入ady亚洲精品| 精品亚洲AV无码一区二区三区| 国产AV无码专区亚洲精品| 国产精品婷婷午夜在线观看| 国产精品怡红院在线观看| 国产精品1024永久免费视频| 无码欧精品亚洲日韩一区| 国产综合精品一区二区三区| 国产精品免费久久久久久久久| 国产女精品视频在ktv| 国产精品无码无卡在线观看久 | 久久精品人人做人人爱爱| 亚洲精品在线网站| 香蕉国产精品频视| 久久久综合九色合综国产精品| 国产麻豆精品一区二区三区v视界 国产麻豆一精品一AV一免费 | 校园春色国产精品| 国色精品卡一卡2卡3卡4卡免费| 99久久精品国产片久人| 华人在线精品免费观看| 99国产精品一区二区| 国产精品免费久久久久久久久 | 蜜桃麻豆WWW久久囤产精品| 无码精品人妻一区二区三区免费看 | 国产亚洲精品AA片在线观看不加载| 亚洲国产高清精品线久久 | 人人妻人人澡人人爽人人精品| 亚洲AV无码国产精品麻豆天美| 亚洲精品无码不卡在线播HE| 尤物yw午夜国产精品视频| 久久夜色精品国产亚洲av| 91麻豆精品国产自产在线观看亚洲| 精品精品国产高清a毛片| 精品久久久久久无码人妻热|