Плотная связь была бы тогда, когда класс, такой как Sentence
, берет на себя ответственность за что-то вне его проблемы, например, на выходе контроллера.
Эти изменения могут быть трудно отследить, так как это не очевидно, когда состояние было изменено.
Хотя вы можете свободно присоединяться к Sentence
с помощью делегирования или уведомления, это все равно усложнит процесс тестирования (единичный или пользовательский интерфейс), а также для поддержки и поддержки вашего кода, когда один класс (in) напрямую влияет на состояния другого класса.
Альтернативный способ
Вы можете переместить эту ответственность из Sentence
, предоставляя общественности метод Sentence
который возвращает нужное свойство.
Установив четкую границу интерфейса, как это, он позволяет вашему модулю быть более модульным, позволяя вам вносить изменения в реализацию предложения или в выходы контроллера точки зрения, не затрагивая что-то в другом классе.
Он также позволяет диспетчеру просмотра (с точки зрения MVC) нести полную ответственность за изменение свойства текста вида.
Теперь из контроллера вида вы можете вызвать публичный метод экземпляра предложения, а затем установить свойство текста IBOutlet контроллера представления на основе возвращаемого значения. Это станет очевидным, где и почему текст изменился, вместо того, чтобы скрывать это изменение в другом (классе) методе.
@MikeG Это не касается ни одной проблемы, заданной этим вопросом, например, как правильно установить текст из класса, который не имеет прямого доступа к kleinGrossLabel. –
@WillM.Я неправильно понял вопрос, спасибо за головы – MikeG