在本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的复合模式,对吗?有人可以提供一个最小的例子吗?
答案 0 :(得分:2)
Composition
指的是"实施"接口,在Swift中称为符合protocols
。
在栅栏的另一侧是Inheritance
,您可以在其中扩展类。
这里的主要问题是你只能扩展一个类,但要符合你想要的任意数量的接口(至少在Swift中)。因此,如果您的班级想要成为UITableViewDelegate
和UITableViewDataSource
,那么您只能通过撰写来实现这一目标。
接口/协议为开发人员提供了更多的开放性,反对你可以使用哪些类。协议只有定义函数和方法 - 以及Swift属性,它们本身具有一些类似函数的功能。另一方面,类可以包含变量,常量等。并且它们已经可以实现其中的一些 - 接口主要是不能做的。