Je veux expliquer les modèles de conception à ma nièce, mais j'ai toujours du mal à le faire. C'est en grande partie dû à mon manque de compréhension claire des modèles de conception. Comment proposez-vous d'expliquer des modèles comme MVC, Singleton, Factory, Repository, etc. en des termes si simples que même les enfants de 10 ans peuvent comprendre.
Je cherche des exemples qui peuvent faciliter la compréhension des schémas. Exemples avec des jouets, des films, de la musique, etc.
design-patterns
gizgok
la source
la source
Réponses:
Je pense que le début de l'article Wikipedia est probablement un bon début:
A design pattern is a general reusable solution to a commonly occurring problem.
Ou voulez-vous expliquer les spécificités de ces modèles particuliers?
la source
Cela dépend pourquoi vous voulez l'expliquer. Si vous voulez simplement expliquer l'idée des modèles, je m'appuierais sur des exemples d'architecture dans A Pattern Language. Ces chercheurs ont découvert que certains aspects d'un bâtiment ou d'une pièce incitaient les gens à vivre ou à travailler dans ce bâtiment ou cette pièce - partout dans le monde dans différentes cultures, avec différents matériaux de construction et dans différents types de quartiers. Comme "Light on Two Sides" par exemple. Les pièces avec des fenêtres sur deux murs sont tellement plus agréables que celles avec un seul (ou aucun). Il y a aussi des modèles comme ça dans le logiciel - même en utilisant différents langages de programmation, certains modèles se reproduisent. Et même dans des logiciels très différents - un jeu, quelque chose pour les calculs financiers, le moteur à l'intérieur de Facebook, etc.
Ensuite, si vous voulez parler d'un modèle particulier (vous ne savez pas pourquoi, à un enfant de dix ans), vous pouvez commencer par donner des exemples de son utilisation avant d'essayer d'expliquer comment cela fonctionne. Ainsi, Composite vous permet d'éviter la récursivité explicite lorsque vous déterminez le poids d'une valise en additionnant le poids du conteneur et le total de tous les conteneurs et des objets en vrac qu'il contient, mais cela fonctionne également pour calculer le fardeau salarial dans une entreprise ou la capacité d'un complexe de fabrication. Si cela est même un peu intéressant pour l'enfant de dix ans, vous pouvez essayer d'expliquer comment cela fonctionne.
la source
Les modèles de conception existent parce que certaines personnes ont réalisé qu'il y avait des moyens de faire fonctionner ensemble des morceaux de logiciel et ont voulu partager leurs idées.
Vous pouvez penser aux modèles de conception de la même manière que vous pensez aux groupes de personnes. Par exemple, parfois, nous avons une personne qui facilite toutes nos réunions. C'est comme un modèle de contrôleur, qui facilite les interactions entre les objets.
Ou imaginez un public, où quelqu'un à l'avant de la salle regarde les gens lever les mains, puis répète la question pour que tout le monde puisse l'entendre, ou peut-être réagisse en y répondant. Ce serait similaire à un modèle de sujet / observateur.
Il existe des modèles qui se comportent comme des traducteurs (le modèle d'adaptateur), comme des agents de sécurité (le proxy), comme des experts dans un domaine (singletons), ou comme des personnes qui vérifient que votre voiture fonctionne (validateurs).
La différence entre les objets et les personnes est que nous pouvons à peu près créer autant d'objets que nous voulons et en avoir plusieurs copies différentes. Il est donc important de comprendre quelles responsabilités les objets devraient avoir, de garder leurs responsabilités petites et d'essayer de ne pas dupliquer ce qu'ils font, afin que le logiciel ne devienne pas trop compliqué. Les experts ont une grande expérience dans ce domaine, et ils nous ont donné ces modèles de la façon dont les logiciels efficaces interagissent afin que nous puissions décider quel type de rôle est la meilleure métaphore pour le travail que nous essayons de faire, et obtenir la des logiciels pour collaborer de la manière la plus appropriée.
la source
Dites-lui qu'ils sont utilisés pour construire des composants individuels d'un système, comme les techniques de cuisson sont utilisées pour construire un repas / plat. Imaginez que vous préparez un dîner avec des pommes de terre, de la viande et des légumes. Vous décidez que vous voulez que les pommes de terre soient bouillies et écrasées, la viande grillée et les légumes cuits à la vapeur. Vous utilisez votre modèle de conception de gril pour cuire les modèles de viande, d'ébullition et de purée pour les pommes de terre et le modèle de vapeur pour les légumes.
la source
La plupart de ces modèles de conception font partie d'une conception orientée objet. Vous ne pouvez pas vraiment les expliquer à quelqu'un qui ne comprend pas OOD. Vous pouvez décrire l'objectif que vous atteignez avec un modèle donné, mais pas comment il fonctionne ni pourquoi en avez-vous besoin. À moins bien sûr que vous n'entrez dans l'explication de l'ensemble de l'OOD.
la source
Les modèles de conception ont d'abord été décrits pour l'architecture. Des choses comme l'emplacement de la place, des bâtiments et d'autres dispositions généralement répétées. Vous pourriez commencer par là. Des choses comme l'entrée principale font face à la rue, la porte vers le coin de la pièce et tout ce à quoi vous pouvez penser. Les modèles de l'auteur d'origine n'étaient pas largement utilisés. Il aurait déclaré que les schémas eux-mêmes ne suffisent pas.
Discutez des choses qui bougent dans la pièce. Mettez une chaise devant la porte. Serait-il judicieux de déplacer les fenêtres ou la porte ailleurs? Pourquoi ou pourquoi pas?
Essayez quelque chose comme mettre une place à la table. Essayez d'organiser les choses par taille en vous éloignant de vous. Pas le schéma normal et difficile à travailler. Configurez-le normalement. Est-ce une disposition appropriée pour un rapide verre de jus? Les schémas ne sont pas toujours appropriés.
Nous vivons avec des motifs tout le temps. Prenez trois ou quatre livres et commencez à les parcourir. Il y a un motif évident dans la disposition; page de titre, table des matières, contenu et index. Tous les composants ne sont pas requis, mais il serait déroutant de les voir à leur place.
la source
Les modèles de conception sont au développement logiciel ce que sont les gabarits au travail du bois. C'est un outil avec lequel vous pouvez faire des «coupes» bien connues à utiliser dans des projets plus importants.
Notez que vous n'avez pas besoin du gabarit pour faire la coupe, c'est juste plus facile dans certaines circonstances.
la source
Je pense que mon autre réponse représente le cas général, mais le PO a commenté en demandant des détails (j'ai donc estimé qu'il méritait une réponse distincte). Malheureusement, je ne connais pas le modèle de référentiel, mais je vais essayer les autres. En règle générale, je pense que la meilleure façon de les expliquer est de savoir quel problème vous voulez résoudre, pourquoi vous voulez le résoudre et comment le problème y parvient.
Singleton
Ce modèle est utilisé lorsque nous voulons garantir qu'il n'y a qu'un seul élément. Le modèle est accompli en empêchant les autres de créer notre objet.
Wikipédia
MVC
Ce modèle est utilisé pour aider à garder les choses modulaires avec tous les avantages qui en découlent. La vue est "l'interface utilisateur", le modèle est les données (y compris la logique métier) et le contrôleur est la façon dont les actions de l'utilisateur manipulent le modèle. Avec cette modularité, rien ne m'empêche d'avoir plusieurs vues / contrôleurs pour travailler avec le même modèle. Pour un exemple trop simplifié, je peux interagir avec mon e-mail ("modèle") via un site Web, une application de bureau et mon iPhone ("vues + contrôleurs"). Si j'ai une boîte aux lettres de groupe partagée, je pourrais créer un contrôleur qui n'enverrait pas de courrier électronique et réutiliser la même vue d'application et le même courrier électronique. (oui trop simpliste, mais j'espère compréhensible :))
De plus, avec cette séparation bien définie des préoccupations, les changements dans l'un (idéalement) ne nécessitent pas de changements dans un autre. Exemple concret, si j'ai besoin de prendre en charge la lecture / écriture dans une base de données MySQL au lieu d'une base de données Oracle, je n'aurais qu'à changer mon modèle et ma vue / contrôleur ne change pas.
Wikipédia
Usine
Il faut être prudent ici car il existe de nombreux modèles similaires appelés Factory ... Je vais parler de l' usine abstraite , mais vous devez savoir qu'il existe également un modèle de méthode Factory .
Fondamentalement, j'utiliserais une usine abstraite lorsque je connais les étapes que je veux effectuer, mais les étapes sur la façon d'accomplir ces étapes individuelles peuvent varier. Par exemple, je pourrais créer une application où je dois créer une boîte de dialogue avec un bouton dessus. En faisant utiliser mon code à une fabrique d'interface utilisateur hypothétique, si j'ai besoin de mon code sur Mac ou Linux au lieu de Windows, je fournis simplement une fabrique différente et le reste de mon code ne change pas. Pour un exemple potentiellement plus sauvage, je pourrais avoir une Web Factory et tout à coup la plupart du code soutenant mon application de bureau alimente maintenant également un site Web riche :) (ok peu pratique pour d'autres raisons, mais en théorie :))
la source
À un enfant de 10 ans qui veut être un hacker - je dirais.
Imaginez si vous pouviez avoir certains des meilleurs hackers du monde assis à côté de vous quand vous étiez en train de pirater .. et de temps en temps ils diraient .. "vous savez si vous le faites comme ça ... [insérer le modèle] ... alors votre code sera [plus rapide / plus sûr / plus facile à entretenir / etc] "comme ce serait cool.
Maintenant que je suppose qu'elle tient à l'idée - je ne perdrais pas mon temps à expliquer chaque modèle, je définirais sa "tâche de piratage" ... et ensuite appliquerais un modèle de conception et expliquerais la valeur ... bonnes ressources et voir où ça va.
Mais surtout, elle devra les apprendre via le mentorat.
la source