我从事 Java 开发已有几年了,大约一年前开始从事 Android 开发。在解决了 Android 之后,我尝试用 iOS 测试我的运气。到目前为止一切顺利,但我对“代表”的想法仍然很模糊。我在这里阅读了几篇文章,但仍然没有最好的想法。对我来说,它们似乎类似于 Java 中的继承,例如使用接口或抽象类。
任何人都可以以我可能理解的观点澄清吗?
提前致谢。
我从事 Java 开发已有几年了,大约一年前开始从事 Android 开发。在解决了 Android 之后,我尝试用 iOS 测试我的运气。到目前为止一切顺利,但我对“代表”的想法仍然很模糊。我在这里阅读了几篇文章,但仍然没有最好的想法。对我来说,它们似乎类似于 Java 中的继承,例如使用接口或抽象类。
任何人都可以以我可能理解的观点澄清吗?
提前致谢。
不,这与继承的概念不同。
我会说这就像在 AWT/Swing 中使用的侦听器方法。例如:
class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) { ... }
}
myComponent.addActionListener(new MyActionListener);
这与 ObjC 中的委托方法看起来像:
@class MyActionListener : NSObject<NSActionListener>
-(void) actionPerformed:(NSEvent*)event;
@end
myComponent.delegate = [[[MyActionListener alloc] init] autorelease];
在实践中,您将类的某些行为委托给组合使用的特定其他对象(而不是通过继承),以便在需要时调用委托方法(用于回调,或者提供特定的实现等等)
使用对象时,可以从其类继承一些回调方法。基本上,您可以在该对象有事件时做出响应。
对象类将该事件“委托”给您的类实例。