2016-01-29 3 views
0
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, нет особого смысла разбив его расширениям ... Или это? Что еще я могу с ним сделать?

ответ

0

Это зависит от того, как структурирована остальная часть вашего кода. Одной из веских причин разбить код на расширения является предоставление каждого расширения в соответствующей области и/или контексте. В крайнем случае, можно реализовать типы как просто данные и предоставить все функции и вычислительные свойства в качестве расширений на основе точки зрения, необходимой в различных контекстах и ​​областях.