委托可以用任何语言实现还是特定于语言

Can delegation be implemented in any language or it is language specific

我目前正在尝试了解委托模式,我想知道这种模式是否是特定于语言的,换句话说,该语言是否需要对 ProtocolsInterfaces 等以使此模式起作用或可以用任何语言实现?

Swift 示例:

protocol SendersMessageDelegate{
    func shareMessage(message: String)
}

class Sender{
    var sendersMessage: String = String()
    var delegate: SendersMessageDelegate?

    func sendMessage(sendersMessage: String) {
        self.sendersMessage = sendersMessage
        delegate?.shareMessage(sendersMessage)
    }
}


class Receiver: SendersMessageDelegate{

    var savedMessage:String?

    func shareMessage(message: String) {
        savedMessage = message
        print(message)
    }
}

var sender = Sender()
var receiver = Receiver()

sender.delegate = receiver

sender.sendMessage("Hello Receiver"

)

协议/接口允许您在所涉及的 class 之间创建接口的清晰通用规范,但这不是必需的。通常,委托 class 除了响应一组方法外,对委托一无所知,但这也不是必需的——通常有明确的运行时测试来检查它是否响应目标方法。严格来说也不需要 classes.

因此,任何可以拥有多个代码文件的语言/ 'objects' 引用另一个代码文件都可以描述为委托关系。委托和组合或简单调用之间的区别可能很模糊。抽象接口有助于将规模扩大到授权。

任何面向对象的语言都可以有委托。它只是一种在 iOS.

中被更广泛使用和支持的设计模式

维基百科的委托模式文章甚至有Java个例子:https://en.wikipedia.org/wiki/Delegation_pattern