我目前正在尝试了解委托模式,我想知道这种模式是否特定于语言,换句话说,语言是否需要对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"
)
答案 0 :(得分:1)
协议/接口允许您创建所涉及的类之间的接口的干净且通用的规范,但它们并不是必需的。通常,委托类对委托一无所知,除了它响应一组方法,但同样不需要 - 通常有明确的运行时测试来检查它是否响应目标方法。严格来说,它也不需要成为课程。
所以,任何你可以拥有多个代码文件的语言/'对象'引用另一个可以被描述为委托关系。委托和组合或简单调用之间的区别可以是粗略的。抽象接口有助于将规模扩展到委托。
答案 1 :(得分:1)
任何面向对象的语言都可以拥有委托。它只是一种在iOS中使用和支持的设计模式。
维基百科的委托模式文章甚至还有Java示例:https://en.wikipedia.org/wiki/Delegation_pattern