gpt4 book ai didi

java - Obj-c 委托(delegate)模型 - 在 Java 中?

转载 作者:行者123 更新时间:2023-11-29 06:23:22 24 4
gpt4 key购买 nike

我正在用 Java 编写一个小的聊天程序。我有一些类,它们的对象必须相互跟踪(例如,连接监听器需要在收到新消息时更新 GUI,就像当用户想要发送消息时 GUI 需要写入连接的编写器一样).

在 Mac OS X 上的 Cocoa 中,我编写并实现了一个委托(delegate)模型。在 Java 中呢? (到目前为止,我只是在初始化新对象时将“this”作为参数传递,以便从新对象中保留对它的引用。)

最佳答案

在 Cocoa/Objective-C 中,委托(delegate)是遵守指定协议(protocol)的对象。 Java 接口(interface)类似于 Objective-C 协议(protocol),除了 Java 不允许可选方法:如果您的类实现接口(interface),则必须实现所有方法。

如果您对委托(delegate)的所有方法都感到满意,只需定义一个接口(interface)并使用它即可。

如果您的委托(delegate)接口(interface)有很多方法并且使其中一些方法可选会很方便,您可以定义一个实现委托(delegate)接口(interface)的 Adapter 类,为每个方法提供一个默认实现。要使用它,您的委托(delegate)类必须扩展适配器类,或者如果不可能,则定义一个扩展适配器类的私有(private)内部类。 (有关此示例,请查看 Java 的 MouseListener 接口(interface)和 MouseAdapter 类。)

总而言之,您仍然可以在 Java 中使用委托(delegate)模式,尽管静态类型检查会使可选方法多工作一些。

关于java - Obj-c 委托(delegate)模型 - 在 Java 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2075358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com