tne*_*nev 2 terminology protocols swift
我正在搜索一些Swift开源代码,现在看到"标记协议"一词弹出两次.从上下文我推断它是一个出于代码可读性原因而存在的协议,而不是实际上强制执行规则.任何人都可以确切地解释什么是"标记协议"以及为什么使用它?
标记协议是从其他面向对象的编程语言中借用的设计模式,允许协议或接口.我们的想法是以特定方式标记一个类,但不要求类通过实现特定方法来提供任何功能.例如,Java使用这种方法来标记可序列化的类.
这是一个例子:
protocol Marker {}
class One : Marker {
...
}
class Two { // No marker
...
}
...
if (myObj is Marker) {
... // Objects of class One will pass
... // Objects of class Two will not pass
}
Run Code Online (Sandbox Code Playgroud)
当通过语言明确地解决标记类的需要时,这种技术变得不那么重要了.例如,Java可以使用注释来处理可序列化,就像C#使用属性一样,但是当时还没有这个功能可用.
Swift是一种具有属性的不断发展的语言,但它们都是预先定义的.添加用户定义的属性将消除对标记协议的需求.
| 归档时间: |
|
| 查看次数: |
504 次 |
| 最近记录: |