如何使用共享实例变量分解符合多个接口的类


class X: Interface1, Delegate1, Delegate2 {
    var sharedVariable = true
    .... very long code comes here, that implements the delegates ...
}

我现在如何分解这么长的班级?我正在考虑使用扩展,例如

extension X: Delegate1 {
    // .. some code here, uses sharedVariable
}
extension X:Delegate2 {
    // and some here, also uses sharedVariable
}

这种方法的问题在于,由于两个扩展都使用 sharedVariable,因此将其分解为扩展没有多大用处......还是吗?我还能用它做什么?

这取决于代码其余部分的结构。将代码分解为扩展的一个很好的理由是在适当的范围和/或上下文中提供每个扩展。在极端情况下,可以将类型实现为数据,并根据各种上下文和范围中所需的观点将所有函数和计算属性作为扩展提供。

最新更新