2010-07-07 3 views
0

Je suis un débutant dans le développement Cocoa, à côté de cela, je connais bien beaucoup de modèles. Jusqu'à présent, je comprends que MVC a à l'esprit éviter les dépendances entre le modèle, la vue et le contrôle. Eh bien, j'ai jeté un oeil dans quelques exemples de contrôleur et j'ai trouvé un comportement qui ne semble pas être en accord avec cet objectif. Normalement, dans ces exemples, j'ai trouvé un contrôleur créant une instance de modèle, en d'autres termes, le contrôleur dépend explicitement du modèle. Pour moi, une solution pourrait être l'utilisation du modèle d'usine pour éviter la dépendance entre le contrôleur et le modèle.Une question sur la dépendance et MVC sur Cocoa

Qu'en pensez-vous? Comment résolvez-vous ce problème?

+0

Merci à JeremyP qui a corrigé mon anglais. –

Répondre

2

Dans Cocoa, le rôle du contrôleur est de servir de médiateur entre le modèle et la vue. Il devrait y avoir un mur entre le modèle et la vue, de sorte que vous puissiez échanger l'un ou l'autre sans que l'autre ne s'en aperçoive; le contrôleur chevauche ce mur, et connaît donc les deux. Donc, oui, les contrôleurs connaissent généralement à la fois le modèle et la vue. Dans le monde du cacao, c'est normal.

Je n'ai jamais trouvé un bon usage pour "l'injection de dépendance" (par exemple, cacher le code du contrôleur dans les fichiers de code modèle/vue) ou le modèle d'usine (objets qui existent uniquement pour faire d'autres objets). Les classes devraient être autonomes; catégories pour les étendre devraient être rares. Et les classes, au moins dans Cocoa, devraient être capables de créer leurs propres instances.

+0

En fait MVC fait un bon travail séparant le modèle de la vue, mais pour moi ce n'est pas suffisant. J'aime utiliser l'injection de dépendance et les modèles d'usine, pour moi, ils sont très utiles. Je voudrais savoir si vous utilisez TDD. Si oui, comment le faites-vous? –

+0

Simple: Ecrivez les tests avant le code testé. Cela n'a rien à voir avec quoi que ce soit dans cette question, cependant. –

+0

Pour moi l'injection de dépendance, MVC et TDD ont tout à faire. Jetez un oeil ici http://wiki.yak.net/709. Merci quand même. –