委托可以用任何语言实现还是特定于语言
Can delegation be implemented in any language or it is language specific
我目前正在尝试了解委托模式,我想知道这种模式是否是特定于语言的,换句话说,该语言是否需要对 Protocols
、Interfaces
等以使此模式起作用或可以用任何语言实现?
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
我目前正在尝试了解委托模式,我想知道这种模式是否是特定于语言的,换句话说,该语言是否需要对 Protocols
、Interfaces
等以使此模式起作用或可以用任何语言实现?
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