Je suis nouveau à MVC bien que j'ai lu beaucoup de documents et d'informations sur le web. Je sais que c'est un peu ambigu et il y a beaucoup d'interprétations différentes des modèles MVC .. mais les différences semblent un peu minimesMVC design en Cocoa - les 3 sont-ils toujours nécessaires? Aussi: conventions de nommage, où mettre contrôleur
Ma principale question est - M, V et C vont toujours être nécessaire pour faire cela correctement? Je n'ai vu personne répondre à cela dans tout ce que j'ai lu. Exemples (je travaille dans Cocoa/Obj-c bien que cela ne soit pas très important)
1) Si j'ai une image simple sur mon interface graphique, ou un champ de saisie de texte qui est juste pour la commodité d'un utilisateur et n'est pas enregistré ou modifié, ces deux seraient V (vue) mais il n'y a pas de M (pas de données et pas de traitement de domaine en cours), et pas de C pour les relier. J'ai juste quelques aspects qui sont "V" - semble bien
2) J'ai 2 fenêtres différentes et visibles qui ont chacune un bouton étiqueté comme "ACTIVATE FOO" - quand un utilisateur clique sur le bouton sur soit, les deux boutons enfoncent et changent pour dire "DÉSACTIVER FOO" et une troisième fenêtre apparaît avec l'étiquette "FOO". Cliquer à nouveau sur le bouton changera le bouton sur les deux fenêtres pour "ACTIVER FOO" et supprimera la troisième fenêtre "FOO". Dans ce cas, mon V se compose des boutons sur les deux fenêtres, et je suppose aussi la troisième fenêtre (peut-être toutes les 3 fenêtres). J'ai certainement un C, mon objet Controller connaîtra ces boutons et fenêtres et obtiendra leurs clics et maintiendra des états génériques concernant les fenêtres et les boutons. Cependant, si j'ai 1 bouton ou 10 bouton, ma fenêtre est appelée "FOO" ou ma fenêtre est appelée "BAR", cela n'a pas d'importance. Il n'y a aucune connaissance de domaine ou de données ici - juste le contrôle des vues. Donc, dans cet exemple, j'ai vraiment "V" et "C", mais pas "M" - est-ce correct?
3) Exemple final, auquel je cours le plus. J'ai un champ de saisie de texte comme vue. Quand je saisis du texte, disons un nombre représentant la gravité, je le garde dans un Modèle qui peut faire des choses comme calculer la physique d'une balle tout en prenant en compte mon paramètre de gravité. Ici, j'ai un V et un M, mais je ne comprends pas pourquoi j'aurais besoin d'ajouter un C - un contrôleur accepterait simplement les signaux de la Vue et les transmettrait au Modèle, et vice versa. Etre comme le C est juste un passthrough pur, c'est vraiment du code "indésirable" et ne rend pas les choses plus réutilisables à mon avis. Dans la plupart des situations, quand quelque chose change, je vais devoir changer le C et le M de manière presque identique. Je me rends compte que c'est probablement l'erreur d'un débutant MVC de penser que la plupart des situations appellent seulement V et M .. me conduit au sujet suivant
4) Dans Cocoa/Xcode/IB, je suppose que mes contrôleurs doivent toujours être un objet instancié dans IB? C'est-à-dire, je pose tous mes composants "V" dans IB, et pour chaque collection d'objets View (choses qui sont liées) je devrais avoir un contrôleur instancié? Et puis peut-être que mes modèles ne devraient pas être trouvés dans IB, et à la place seulement trouvés comme des classes dans Xcode qui se lient avec le code du contrôleur qui s'y trouve. Est-ce exact? Cela pourrait expliquer pourquoi vous auriez un contrôleur qui n'ajoute pas vraiment de valeur - parce que vous gardez cohérent ..
5) Que diriez-vous de nommer ces choses - pour mon exemple ci-dessus au sujet de FOO/BAR peut-être quelque chose qui se termine par contrôleur serait le C, comme FancyWindowOpeningController, etc? Et pour les modèles - devrais-je les suffixer avec comme GravityBallPhysicsModel etc, ou devrais-je juste nommer ceux que j'aime? Je n'ai pas vu assez de code pour savoir ce qui se passe dans la nature et je veux partir sur la bonne voie dès le début
Merci d'avance de m'avoir mise au courant ou de m'avoir fait savoir que je suis sur la bonne voie. Je sens que je commence à l'obtenir et la plupart de ce que je dis ici est logique, mais la validation de mes devinettes m'aiderait à me sentir confiant ..
Merci TechZen, je pense que presque ongles – Nektarios