授权可以用任何语言实现,也可以是特定语言的

时间:2016-02-22 20:50:21

标签: ios swift delegation

我目前正在尝试了解委托模式,我想知道这种模式是否特定于语言,换句话说,语言是否需要对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"

)

2 个答案:

答案 0 :(得分:1)

协议/接口允许您创建所涉及的类之间的接口的干净且通用的规范,但它们并不是必需的。通常,委托类对委托一无所知,除了它响应一组方法,但同样不需要 - 通常有明确的运行时测试来检查它是否响应目标方法。严格来说,它也不需要成为课程。

所以,任何你可以拥有多个代码文件的语言/'对象'引用另一个可以被描述为委托关系。委托和组合或简单调用之间的区别可以是粗略的。抽象接口有助于将规模扩展到委托。

答案 1 :(得分:1)

任何面向对象的语言都可以拥有委托。它只是一种在iOS中使用和支持的设计模式。

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