【问题标题】:Swift: conforming to protocol using extension and composition patternSwift:使用扩展和组合模式符合协议
【发布时间】:2015-12-26 15:22:36
【问题描述】:

在此 PDF 中的幻灯片 62:Some Columbia College Presentation 上,它说 Swift 及其扩展背后的想法之一是使用组合模式符合协议。

现在我了解了 Swift 中扩展的语法

//example from Apple:
extension SomeType: SomeProtocol, AnotherProtocol {
// implementations of not yet provided functions and properties of SomeType go here
}

但是构图模式与它有什么关系呢?这家伙确实是指here 描述的复合 模式,对吧?有人可以提供一个如何使用它的最小示例吗?

【问题讨论】:

  • 示例中的“组合模式”意味着 SomeType 符合 SomeProtocol 和 AnotherProtocol 协议。不要在幕后寻找一些魔法或巫师......尝试检查苹果文档并尝试使用他们正在使用的术语。如何使用基于协议的编程模式写得很好。

标签: swift design-patterns protocols composition composite


【解决方案1】:

Composition 指的是“实现”接口,在 Swift 中称为符合protocols

围栏的另一边是Inheritance,您可以在其中扩展类。

这里的主要问题是您只能扩展一个类,但可以根据需要遵循任意数量的接口(至少在 Swift 中)。因此,如果你的班级想成为UITableViewDelegateUITableViewDataSource,你只能通过作文来实现。

接口/协议让开发人员更加开放,反对您可以使用哪些类。协议仅定义函数和方法 - 并且在 Swift 属性中,它们本身具有一些类似函数的功能。另一方面,类可以包含变量、常量等。它们已经可以实现其中的一些——这是接口大多无法做到的。

【讨论】:

  • 非常混乱的术语。就像苹果公司故意在其他地方以不同的名称为相同的东西使用不同的术语一样。 iOS UX 指南也充满了这些东西,例如基本上是扁平化设计的“三个主题”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 2013-05-19
相关资源
最近更新 更多