MVC est une grande idée. C'est plus une philosophie directrice qu'une règle spécifique, et elle n'est pas toujours appliquée de la même manière. Lire Apple's discussion of MVC pour apprécier la différence entre MVC traditionnel et MVC dans Cocoa.
Il est difficile de dire comment appliquer MVC à votre application, car vous ne nous avez pas dit ce que l'application devrait faire , et aussi cela ne semble pas être une application réaliste. Je vais donc faire de mon mieux et faire quelques suppositions en cours de route. Une application qui dessine juste un tas de cercles dans des emplacements fixes sur un fond n'est pas très intéressante - elle pourrait être presque toutes les vues, à peine besoin d'un contrôleur du tout. Disons donc que les cercles se déplacent tous dans des directions différentes, sont dessinés dans des couleurs différentes, et changent de taille au fil du temps. Vous commencez maintenant à avoir besoin d'un modèle, de sorte que vous pouvez garder une trace des données que ces cercles représentent, et un contrôleur pour traduire le modèle en termes qui peuvent être représentés par les vues.
Puisque vous avez demandé spécifiquement sur les cercles de dessin, commençons par la vue. Cela semble être une bonne idée d'avoir une vue personnalisée qui sait comment dessiner un cercle en fonction des paramètres nécessaires: surface, couleur et position. Vous devriez probablement faire ces choses choses, et surcharger -drawRect: de telle sorte qu'il dessine un cercle de la zone donnée dans la couleur donnée. Nous ne savons pas ce que ces cercles représentent, mais ce n'est pas très amusant s'ils ne représentent pas quelque chose, alors supposons que le travail de l'application est de nous aider à comparer les entreprises. Nous avons des données sur le chiffre d'affaires, la capitalisation boursière, le nombre d'employés, la notation de crédit, le nom, le ticker, etc. Vous pouvez créer un objet personnalisé pour stocker toutes les données pour chaque société, ou tout mettre dans un dictionnaire. Notre modèle est un ensemble de ces objets ou dictionnaires personnalisés.
Remarquez que les vues en cercle ne connaissent rien aux sociétés et que le modèle ne sait rien des cercles. C'est une bonne chose. C'est aussi là que le contrôleur entre en jeu. Le contrôleur est l'endroit où vous mettez le code qui exprime visuellement le modèle en utilisant les vues. Il interprète également les événements à partir des vues, en mettant à jour le modèle si nécessaire. Ainsi, notre contrôleur connaît à la fois les particularités des sociétés et les propriétés de la vue circulaire. Il crée une vue circulaire pour chaque société du modèle. Je veux que la superficie d'un cercle corresponde à la capitalisation boursière de la société, la position verticale pour représenter le revenu et la position horizontale pour indiquer le nombre d'employés. Nous attribuerons une couleur en fonction de la cote de crédit de la société. Le contrôleur devrait, bien sûr, garder une trace de toutes les vues en cercle et un moyen de faire le lien entre les vues en cercle et les sociétés.
Maintenant vous avez quelque chose. C'est toujours une application assez simple, mais vous avez un tableau utile comparant les entreprises dans plusieurs dimensions. Améliorons-le. D'abord, il est difficile de savoir quel cercle représente quelle société. Ce serait bien si une vue en cercle pouvait éventuellement afficher du texte. Ajoutons les propriétés de titre et de sous-titre, et modifions -drawRect: pour dessiner ces chaînes respectivement au-dessus et en dessous du cercle. Nous changerons également le contrôleur de sorte qu'un clic ou un clic sur un cercle place le titre et le sous-titre de ce cercle au nom et au symbole de la société, ou les efface s'ils ont été précédemment définis. Deuxièmement, il est bon de comparer les entreprises à un moment donné, mais plus intéressant si nous pouvons montrer les changements au fil du temps. Modifions le modèle pour inclure des données historiques sur les revenus, la capitalisation boursière, les employés et la notation. Nous pouvons mettre à jour le contrôleur afin qu'il puisse utiliser les données historiques pour animer les cercles.
La première modification concernait la manière dont nous dessinions des informations à l'écran et ne nécessitait aucune modification du modèle. Le deuxième changement portait sur les données avec lesquelles nous devions travailler et ne nécessitait aucune modification de la vue. Vous pourriez facilement réutiliser la vue circulaire pour représenter d'autres types de données, ou peut-être même être la rondelle dans un match de hockey aérien. C'est juste un cercle coloré. Et vous pouvez réutiliser le modèle dans une autre application qui traite du même type de données. Je suis sûr que l'application hypothétique dans cette explication par exemple très longue ne ressemble en rien à votre propre application, mais peut-être que cela vous aidera à expliquer pourquoi MVC est utile et informez la structure de votre propre application. application. Bonne chance.
Merci, cela aide vraiment. J'avais créé une application qui avait plusieurs cercles de masses différentes. Je voudrais définir certaines vitesses et utiliser certaines fonctions physiques que j'ai codées pour montrer des collisions d'impulsion entre des balles, tout comme dans un jeu de billard. Ils étaient des balles volantes libres qui sont entrées en collision, c'est tout. La façon dont j'ai créé cette petite application n'a pas suivi MVC à tous. Je viens d'un fond c/C# lourd, et n'ai jamais utilisé MVC, et donc un exemple est exactement ce dont j'avais besoin. Merci pour votre exemple, ça aide vraiment. – Dalisto1
Super - content de pouvoir aider. – Caleb