[JAVA] [Modèle MVC] Un mémo qu'un débutant a appris MVC

C'est le résultat de ce que j'ai appris en recherchant MVC. Si vous avez des suggestions, je vous serais reconnaissant de bien vouloir commenter.

Qui est la cible de cet article

・ Les personnes qui connaissent le mot MVC et qui veulent savoir ce que c'est ・ Les gens qui veulent savoir comment les débutants perçoivent MVC

Qu'est-ce que MVC?

En un mot, c'est ** l'un des modèles d'organisation des programmes **. Sur la base de l'idée qu '«un système qui peut être contrôlé visuellement par l'utilisateur peut être divisé en parties appelées ** Modèle **, ** Vue ** et ** Contrôleur **», celles-ci sont abrégées en MVC.

Quel type d'unité est "M", "V" et "C"?

Par exemple, considérez la page d'achat de produits Amazon que tout le monde a utilisée. Il s'agit du flux de traitement lorsque vous appuyez sur le bouton d'achat sur la page du produit Amazon. (Je ne connais pas l'implémentation interne, donc je vais l'écrire en supposant qu'elle est implémentée basée sur MVC)

Vue d'ensemble

image.png L'image entière ressemble à ceci.

Le déroulement est le suivant (veuillez signaler tout point inapproprié).

① Afficher la page produit

Montrez la page du produit à l'utilisateur via le moniteur. image.png

L'utilisateur qui voit la page du produit confirme la position du bouton d'achat.

② Appuyez sur le bouton d'achat

L'utilisateur déplace le curseur de la souris sur le bouton d'achat et clique.

③ Notification que le bouton d'achat a été enfoncé

Envoie une notification au contrôleur indiquant que le bouton d'achat a été enfoncé. Cela déclenche le démarrage du traitement par le système.

④ Traitement de la demande associé à l'appui sur le bouton d'achat

À la réception de la notification, le contrôleur demande au modèle de «prendre les mesures appropriées car le bouton d'achat a été enfoncé».

⑤ Traitement DB

Le modèle qui a reçu la demande traite le DB en fonction du contenu de la demande. Dans ce cas, il est lié à l'action «utilisateur achetant le produit», donc ・ Réduisez de 1 l'inventaire des produits cibles. ・ Obtenez des informations sur le produit cible Etc.

⑥ Demande de tirage de la page d'achat

Demandez à View "d'afficher la page d'achat".

⑦ Référence des données produit

View va à Model pour obtenir les informations nécessaires pour dessiner la page de fin d'achat. Le traitement de la base de données étant terminé au stade de ⑤, le modèle dispose des informations nécessaires pour dessiner la page suivante.

⑧ Achèvement du dessin de la page d'achat

Sur la base des données acquises, View dessine la page de fin d'achat.

Le flux est comme ... Maintenant que nous avons une idée approximative de ce que fait chaque contrôleur de vue modèle, trions-le en mots.

** Qu'est-ce que View? ** **

C'est difficile à comprendre à partir de Model, alors commençons par View. View est le plus intuitif et le plus facile à comprendre.

En un mot, View ** dessine la partie visible par l'utilisateur. Dans ce cas, ** le traitement pour afficher la page de fin d'achat ** est effectué. image.png

Le travail de View est de ** connecter le système à l'utilisateur **. Grâce à View, des informations telles que «combien vous déplacez la souris et cliquez pour acheter le produit» et «l'achat du produit XX est terminé» sont transmises à l'utilisateur.

** Qu'est-ce que le contrôleur? ** **

Vient ensuite le contrôleur. ** Le contrôleur ** reçoit les entrées de l'utilisateur et émet des commandes vers Model et View. C'est comme un commandant.

Dans ce cas, ** il reçoit l'action de l'utilisateur "en appuyant sur le bouton d'achat" et le convertit en une instruction qui peut être traitée par Model and View **.

Pour le modèle, "Veuillez réduire le stock du produit cible" "Obtenir les informations sur le produit cible"

Chaque vue a une instruction pour "dessiner l'écran après l'avoir ajouté au panier".

** Qu'est-ce que le modèle? ** **

Quand je l'ai recherché,

Le modèle traite de l'ensemble de la logique métier.

On explique cela très souvent.

Cependant, lorsque nous étudions le mot «logique métier», nous constatons finalement que ** «il n'y a pas de définition claire» **.

En d'autres termes, la signification dépend du contexte.

Personnellement, l'explication du modèle qui convient le mieux est ** "Le modèle fait tout le travail sauf View et Controller" ** C'est.

Le processus d'acquisition des données de la base de données et le processus de traitement des données à afficher dans View sont tous effectués par modèle.

ici ・ Accédez à la base de données et réduisez l'inventaire des produits d'un ・ Obtenez des informations sur les produits dans votre panier Nous faisons le traitement.

Quelle est la raison de la division en MVC?

Jusqu'à présent, nous avons expliqué chaque partie de MVC. Alors pourquoi avons-nous besoin de faire cela? Il y a deux principales raisons.

1. Travail facile à diviser

Supposons que l'équipe de développement ait "un ingénieur qui sait créer des traitements autour de la base de données" et "un ingénieur qui réfléchit bien à l'interface utilisateur".

A ce moment, si la source du système est séparée par MVC, le premier doit développer "Model" et le second doit développer "View".

Il y a un avantage que chaque responsable est clarifié et l'efficacité du travail est améliorée.

De cette façon, il est très important que chaque partie du système soit clairement organisée lors du développement en équipe.

2. Facile à entretenir

Il n'y a rien de tel que "alors, est-il logique de séparer MVC dans le développement personnel?"

Lorsque vous organisez votre système avec MVC, chaque fonction devient indépendante.

En d'autres termes, ** Lorsqu'une partie change de fonction, l'influence sur les autres parties est réduite. ** **

Par exemple, changer la position du bouton du panier d'achat ne signifie pas changer le traitement du DB associé au bouton du panier.

Si vous avez écrit le traitement de la base de données dans View, vous devrez peut-être le modifier (le système que j'ai créé dans le passé est comme ça).

Facile de faire des erreurs

Ecrire le processus à écrire dans Model in View

C'est une erreur que j'ai commise lorsque j'ai développé le système à partir de rien. J'ai écrit dans View le processus de connexion à la base de données et le processus de traitement des données.

Puisqu'il s'agit d'un système à petite échelle, je l'ai fait avec l'idée que "c'est OK si ça marche", mais avec cette idée, un programme avec une maintenabilité extrêmement faible peut être créé.

Résumé / impression

・ MVC est un modèle d'organisation de programme

Modèle Un modèle pour organiser des programmes avec View Controller. L'objectif principal est de faciliter la division du travail et d'améliorer la maintenabilité.

・ Je pense que c'est plus facile à comprendre si vous dites "VCM"

Compte tenu du flux dans lequel l'utilisateur regarde la vue, fait fonctionner le contrôleur et le modèle le traite en arrière-plan, j'ai pensé qu'il serait plus facile de comprendre intuitivement en disant «VCM». Y a-t-il une raison à la commande de MVC?

Les références

https://hijiriworld.com/web/mvc-concept/ MVC compris par dessin animé https://www.slideshare.net/MugeSo/mvc-14469802 Après tout, votre MVC est faux https://qiita.com/s_emoto/items/975cc38a3e0de462966a À propos du modèle MVC https://ja.wikipedia.org/wiki/%E3%83%93%E3%82%B8%E3%83%8D%E3%82%B9%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF Wikipédia "Logique métier" http://at-grandpa.hatenablog.jp/entry/2013/11/01/072636 Repensez au "malentendu MVC"

Recommended Posts

[Modèle MVC] Un mémo qu'un débutant a appris MVC
Un mémo qui a touché Spring Boot
Modèle MVC
Un exemple simple du modèle MVC
[Note personnelle] J'ai appris à la légère sur les modificateurs
Une histoire qui sépare la logique métier et le modèle
Un mémo pour moi que l'orientation de l'objet est quelque chose
Un mémo qui gère une classe créée indépendamment avec ArrayList
Qu'est-ce qu'un modèle MVC?
[Débutant] Application Android qui fait rouler des balles à l'aide de capteurs [Java]