Le couplage serré serait quand une classe comme Sentence
, assume une responsabilité pour quelque chose en dehors de sa préoccupation, comme la sortie d'un contrôleur de vue.
Ces types de modifications peuvent être difficiles à localiser, car il n'est pas évident de savoir où l'état a été modifié. Bien que vous puissiez coupler Sentence
en utilisant la délégation ou la notification, cela compliquerait encore les tests (unitaires ou d'interface utilisateur), ainsi que la prise en charge et la maintenance de votre code, lorsqu'une classe (in) affecte directement le état d'une autre classe.
Une autre façon
Vous pouvez déplacer cette responsabilité de Sentence
en fournissant une méthode publique pour Sentence
qui retourne la propriété désirée. En établissant une frontière d'interface claire comme celle-ci, votre code peut être plus modulaire, vous permettant d'apporter des modifications à l'implémentation de Phrase ou aux prises du contrôleur de vue, sans affecter quelque chose dans l'autre classe.
Il permet également au contrôleur de vue (à partir d'une perspective MVC) d'être seul responsable de la modification de la propriété de texte de la vue. Maintenant, à partir du contrôleur de vue, vous pouvez appeler la méthode publique d'une instance de phrase, puis définir la propriété de texte IBOutlet du contrôleur de vue en fonction de la valeur renvoyée. Cela rendra évident où et pourquoi le texte a changé, au lieu de cacher ce changement dans une autre méthode (de classe).
@MikeG Cela ne résout aucun des problèmes présentés par cette question, par exemple comment définir correctement le texte d'une classe qui n'a pas d'accès direct à kleinGrossLabel. –
@WillM.J'ai mal lu la question, merci pour les heads up – MikeG