除代表之外还有协议的其他用法吗?

时间:2011-09-23 00:56:50

标签: objective-c

我只是想知道除了代表之外还有协议的其他用法吗?我只看到协议被用作代表,但我没有注意到它是否有任何其他目的。那么除了代表之外,协议的实际目的是什么?

2 个答案:

答案 0 :(得分:1)

您可以在任何想要定义一组共享行为的地方使用它,而不会强制使用特定的继承树。

答案 1 :(得分:1)

来自apple docs:

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProtocols.html

协议声明可以由任何类实现的方法。协议在至少三种情况下都很有用:

  • 声明其他人应该实施的方法
  • 在隐藏类的同时声明对象的接口
  • 捕捉非等级相关的类之间的相似性

具体来说,作为一个例子,我还使用协议来实现提供者模型,在那里我抽象出系统的完整部分。例如,为了更多地解耦我的代码,我可以创建一个数据提供者。我可以有一个sqlite提供者,一个文件提供者等......一个协议允许我解耦这些。

在这种情况下,每个提供程序不会相互继承,但它们都实现了相同的模式,内部结构不同。将协议视为您遵守的模式 - 或者,如果您将其视为接口,则为合同。

希望有所帮助。

相关问题