<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 亚洲欧美日韩久久精品| 国产成人久久精品二区三区| 日韩精品无码成人专区| 久久午夜无码鲁丝片午夜精品| 九九精品99久久久香蕉| 亚洲精品9999久久久久无码| 无码人妻精品一区二区三18禁 | 精品久久久久久无码人妻中文字幕 | 久久久久国产精品免费看| 亚洲国产aⅴ成人精品无吗| 99精品视频在线视频免费观看| 日本精品夜色视频一区二区| 99精品国产在热久久无码| 自拍偷自拍亚洲精品情侣| 精品久久久久久无码中文字幕一区| 久久亚洲AV无码精品色午夜| 国产精品福利片免费看| 精品久久精品久久| 漂亮人妻被黑人久久精品| 国产高清在线精品一区二区 | 亚洲人成在线精品| 久久精品国产99久久香蕉| 亚洲精品蜜夜内射| 精品久久久中文字幕人妻| 精品无码av一区二区三区| 亚洲av成人无码久久精品| 国产精品日本一区二区在线播放| 国产亚洲精品2021自在线| 亚洲精品第一国产综合野| 精品久久一区二区三区| 这里只有精品视频在线| 国产亚洲精品bv在线观看| 久久精品一品道久久精品9| 国产精品免费αv视频| 精品国产三级在线观看| 国产精品久久久久久久久久久不卡| 久久久久无码精品国产app| 久久国产精品99精品国产| 久久无码国产专区精品| 国产精品爽爽va在线观看网站| 无码少妇精品一区二区免费动态|