Apple 如何规定哪些 classes 应该分解为 class 的协议接口?
How does Apple dictate which classes should be broken out to a protocol interface for a class?
通过使用 UITableView 和 NSSpeechSynthesizer 开发大量应用程序,我一直在思考委托一词的确切含义。我读过一些有用的博客和书籍,所以它似乎归结为一种设计模式,可以实现单一责任或关注点分离(或者至少这是我的观点)。我的问题是,有人知道 Apple 决定为 类 使用委托组合的意义吗?
忘掉设计模式吧。如果有设计模式,那就是 "delegate design pattern"。
UITableView 可以以无数种不同的方式显示数据。数据可以来自无数不同的地方。 UITableView 无法处理所有这些。
这就是应用程序提供一个 delegate 对象来为 UITableView 提供数据的原因。委托必须能够告诉 UITableView table 中有多少个部分,每个部分有多少行,每行的数据,每个部分的页眉和页脚。有了这些知识,UITableView 就可以完成它的工作了。如果没有这个委托,您将不得不创建很多很多 UITableView 的子class,这很痛苦。
但是没有 UITableViewDelegate class,因为那样你就必须创建很多 UITableViewDelegate 的子classes,并且有完全相同的大量子class的问题es。相反,有一个 协议 。该协议定义了委托需要支持哪些方法,然后您将这些委托方法添加到一些无论如何都能理解数据的 class 中。
那么委托模式是如何工作的:您创建一个 class 来完成这项艰巨的工作。但是为了使 class 能够适应不同的情况,您为它提供了一个实现不同情况之间差异的委托对象。委托对象通常是完全不相关的 class 的实例,委托方法已添加到该实例中。
通过使用 UITableView 和 NSSpeechSynthesizer 开发大量应用程序,我一直在思考委托一词的确切含义。我读过一些有用的博客和书籍,所以它似乎归结为一种设计模式,可以实现单一责任或关注点分离(或者至少这是我的观点)。我的问题是,有人知道 Apple 决定为 类 使用委托组合的意义吗?
忘掉设计模式吧。如果有设计模式,那就是 "delegate design pattern"。
UITableView 可以以无数种不同的方式显示数据。数据可以来自无数不同的地方。 UITableView 无法处理所有这些。
这就是应用程序提供一个 delegate 对象来为 UITableView 提供数据的原因。委托必须能够告诉 UITableView table 中有多少个部分,每个部分有多少行,每行的数据,每个部分的页眉和页脚。有了这些知识,UITableView 就可以完成它的工作了。如果没有这个委托,您将不得不创建很多很多 UITableView 的子class,这很痛苦。
但是没有 UITableViewDelegate class,因为那样你就必须创建很多 UITableViewDelegate 的子classes,并且有完全相同的大量子class的问题es。相反,有一个 协议 。该协议定义了委托需要支持哪些方法,然后您将这些委托方法添加到一些无论如何都能理解数据的 class 中。
那么委托模式是如何工作的:您创建一个 class 来完成这项艰巨的工作。但是为了使 class 能够适应不同的情况,您为它提供了一个实现不同情况之间差异的委托对象。委托对象通常是完全不相关的 class 的实例,委托方法已添加到该实例中。