java,delegate
<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
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;}}
-
手機qq如何判斷好友是否隱身
1、在手機桌面上打開【QQ】,進入主界面,點擊【聯繫人】選項。然後點擊要判斷是否隱身的好友。在他的詳細資料界面,點擊【發消息】。進入聊天界面後,點擊右上角【通話】。2、在通話方式中,選擇【語音通話】功能。如果顯示【等待對方接聽】,那他就在隱身。顯示爲【對方...
-
載人火箭頂部有一個尖頂叫什麼塔
1、載人火箭頂部有一個尖頂叫逃逸塔,又名逃生塔,裝在飛船頂端,從遠處看像是火箭上的避雷針,與一般火箭圓錐形的頭部很不相同。2、由塔架、逃逸發動機和分離發動機(均爲固體火箭發動機)組成,發生緊急情況時,逃逸發動機迅速點火,使航天員座艙(返回艙)與固體火箭分離,迅速脫離...
-
微博如何屏蔽廣告
微博裏面經常出現廣告是一件很煩心的事情,不過,有很多的方法可以屏蔽微博廣告。首先打開自己的微博,進入微博首頁,然後找到自己不喜歡看的微博廣告,在右側有一個倒三角的按鈕,點擊進入,我們點擊想要屏蔽的經常發廣告的微博,然後點擊確定就可以了。也可以屏蔽來自某個客...
-
移動硬盤壞了上面的數據能恢復嗎
移動硬盤壞了數據能否恢復要看硬盤損壞的程度,如果壞的程度不嚴重,可以通過電腦自動修復。通過電腦自動修復硬盤的方法比較簡單,首先將移動硬盤連接到電腦上,選中移動硬盤,右鍵點擊【屬性】-【工具】-【差錯】-【開始檢查】,勾選【自動修復文件系統錯誤】和【掃描並...