当前位置:懂科普 >

IT科技

> java delegate

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

实战操作:

因为在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
  • 文章版权属于文章作者所有,转载请注明 https://dongkepu.com/itkeji/egqvom.html