代码之家  ›  专栏  ›  技术社区  ›  Laurence Wingo

苹果如何规定哪些类应该被划分为类的协议接口?

  •  0
  • Laurence Wingo  · 技术社区  · 6 年前

    通过使用UITableView和NSSpeechSynthesizer开发大量应用程序,我一直在思考“委托”一词的确切含义。我读过一些有用的博客和书籍,所以它似乎可以归结为一种实现单一责任或分离关注点的设计模式(至少这是我的观点)。我的问题是,有人知道苹果决定在类中使用委托组合的要点吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   gnasher729    6 年前

    忘记设计模式吧。如果有一个设计模式,那么它就是“委托设计模式”。

    UITableView可以以无数种不同的方式显示数据。数据可以来自无数个不同的地方。UITableView无法处理所有这些。

    这就是为什么应用程序提供一个 代表 对象,该对象为UITableView提供数据。代理必须能够告诉UITableView表中有多少节,每个节中有多少行,每行的数据,每个节的页眉和页脚。有了这些知识,UITableView就可以完成它的工作。如果没有这个委托,您将不得不创建UITableView的很多子类,这很痛苦。

    但是没有UITableViewDelegate类,因为这样您就必须创建UITableViewDelegate的许多子类,并且面临着与数百万子类完全相同的问题。相反,有一个 协议 。协议定义委托需要支持哪些方法,然后将这些委托方法添加到理解数据的某个类中。

    委托模式的工作原理是:创建一个完成这项艰巨工作的类。但是,为了使类能够适应不同的情况,您为它提供了一个委托对象,该对象实现了不同情况之间的差异。委托对象通常是一个完全不相关的类的实例,委托方法已添加到该类中。