<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 四虎精品影库4HUTV四虎| 久久国产精品一国产精品金尊| 精品香蕉一区二区三区| 国内精品久久久久久不卡影院 | 精品久久久久久久中文字幕| 日韩精品一区二区三区老鸭窝| 久久青青草原精品国产不卡| 亚洲精品伦理熟女国产一区二区| 麻豆精品成人免费国产片| 狠狠综合视频精品播放| 99久久免费国产精品特黄| 国产成人久久精品一区二区三区| 日韩精品成人a在线观看| 亚洲国产精品无码观看久久| 亚洲精品天天影视综合网| 国产情侣大量精品视频| 国产精品美女视视频专区| 国产私拍福利精品视频网站| 久久国产精品免费专区| 国产三级精品久久| 国产69久久精品成人看小说| 亚洲AV永久无码精品一福利 | 亚洲精品无码永久在线观看| 久久久久久久精品毛万迈巴赫车标| 人人妻人人澡人人爽人人精品 | 91国内揄拍国内精品对白| 亚洲精品制服丝袜四区| 久久精品无码一区二区app| 国产伦子系列麻豆精品| 精品国产一区二区三区久| 国产私拍福利精品视频网站| 91精品免费不卡在线观看| 色欲国产麻豆一精品一AV一免费| 九九99精品久久久久久| 热久久这里是精品6免费观看| 国产成人精品福利网站在线观看 | 精品国产香蕉伊思人在线在线亚洲一区二区| 亚洲国产精品无码久久久秋霞1| 精品久久亚洲中文无码 | 中文字幕乱码亚洲精品一区| 久久精品国产99国产精品亚洲|