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;}}
-
移动硬盘坏了上面的数据能恢复吗
移动硬盘坏了数据能否恢复要看硬盘损坏的程度,如果坏的程度不严重,可以通过电脑自动修复。通过电脑自动修复硬盘的方法比较简单,首先将移动硬盘连接到电脑上,选中移动硬盘,右键点击【属性】-【工具】-【差错】-【开始检查】,勾选【自动修复文件系统错误】和【扫描并...
-
跳绳1000下消耗多少卡路里
跳绳是现在很多女性朋友比较喜欢的运动,不但能强身健体,而且还有减肥效果。跳绳是一项有氧运动,连续性跳绳的主要能源是脂肪而不是糖类,所以,可以燃烧掉体内的大量脂肪,对减肥、降血脂具有积极作用。跳绳还可以让血液获得更多的氧气,使心血管系统保持强壮和健康。每个...
-
查询苹果手机序列号的方法
1、首先打开设置,选择通用点击关于本机,然后长按序列号,点击拷贝,返回桌面。2、打开safari,接着进入苹果官网,点击左上角的两道杠图标,点击技术支持,点击搜索支持框,点击快速链接的保修状态查询,最后输入序列号,输入验证码,点击继续即可查看。...
-
百度网盘如何注册登录
百度网盘是百度推出的一项云存储服务,可以大容量的储存文件视频等,那百度网盘怎么注册登录呢?一起来看看吧!首先,在手机桌面上找到并打开百度网盘软件,会看到有百度账号登录、微信快捷登录、微博、qq和手机号注册几个登录方式,点击手机号注册;页面加载至注册页面,输入手...