Modèles de conception pour débutants
Si vous avez déjà écrit des programmes pour des produits ou des applications logicielles, grandes / petites, vous avez probablement utilisé beaucoup de Design Patterns… bien qu’il soit possible qu’ils ne soient pas l’un des modèles de conception les plus utilisés / standard.
Mais oui, il y a une différence évidente entre la mise en œuvre d’un modèle de conception et « l’utilisation » d’un modèle de conception… dans tous les cas, la personne travaillant avec des modèles de conception le comprend ou le comprendra facilement.
Le fait est que les modèles de conception ne sont pas nouveaux pour les programmeurs.
Dans cet article ci-dessous, j’essaie d’expliquer les modèles de conception, dans leurs bases, et nous étudierons les détails de divers modèles, exemples, etc. dans un autre article.
Qu’est-ce qu’un modèle de conception ?
Pour commencer…
Je pense que la meilleure façon de commencer à comprendre les modèles de conception est de comprendre les modèles non techniques que nous suivons consciemment / inconsciemment dans notre vie quotidienne.
Par exemple, prenons un grand nombre de CV soumis pour un poste vacant. Le curriculum vitae de tout le monde ne se ressemble pas… bien qu’ils aient tous tendance à faire la même chose, c’est-à-dire dire à un lecteur ce qu’ils sont compétents, ou comment il/elle peut être apte au travail.
La majorité d’entre eux qui soumettent des CV à des emplois savent qu’ils doivent soumettre un CV avec un ensemble particulier d’informations dans un document Word formaté.
Ceci… est un modèle, que tout le monde soumet un curriculum vitae avec un ensemble particulier d’informations qui y sont exprimées.
Si vous en avez envie… appelez-le Templates au lieu de Patterns. Modèles de conception.
Il y a beaucoup de choses de ce genre dans la vraie vie qui sont des modèles. Certaines personnes aiment les exemples ci-dessous :
Tous les chefs du monde cuisinent des pizzas ou des frites de la même manière. Bien qu’ils puissent le garnir / le parfumer différemment. C’est un modèle.
La conception de chaque voiture suit un modèle de conception de base, quatre roues, un volant, le système d’entraînement de base comme l’accélérateur-frein-embrayage, etc.
Toutes les choses construites / produites à plusieurs reprises suivront inévitablement un modèle dans sa conception… que ce soit des voitures, des pizzas, des distributeurs automatiques de billets, peu importe… même la brosse à dents.
Les conceptions qui sont presque devenues un moyen standard de coder une logique / un mécanisme / une technique dans un logiciel, sont donc connues sous le nom de – et donc – étudiées sous le nom de modèles de conception de logiciels.
Pourquoi un modèle de conception est-il important ?
En gros pour deux raisons :
- Pour s’en tenir à une norme
- Pour accélérer le développement
Je vais vous expliquer en détail.
Dans un premier temps, on voit pourquoi s’en tenir à un schéma standard est intéressant.
Prenons la liste des exemples de CV dont nous avons discuté précédemment.
Il peut y avoir un ou deux candidats qui envoient leurs candidatures par e-mail sans mise en forme appropriée, sans pièces jointes à leur e-mail, etc., .. ces un ou deux candidats ne suivent pas le modèle .. et ne sont PAS susceptibles de finir avec le travail…. Pourquoi? Parce qu’ils s’écartent d’un modèle bien établi, qui pourrait ne pas plaire aux personnes qui présélectionnent les CV pour le poste.
N’y a-t-il personne qui s’écarte du schéma et devient «cool »? N’est-ce pas de l’Innovation ?
Oui, il y a des moments où un CV présenté de manière très différente obtient le travail parce qu’il est différent des autres. Habituellement, j’ai entendu parler de concepteurs de sites Web qui ont décroché des emplois de choix parce qu’ils ont compilé et présenté un film sur CD de leur travail, ou créé un personnage d’animation expliquant leur travail, l’ont mis sur leur blog, etc.
Mais .. c’est de l’expérimentation (l’innovation vient d’expériences réussies).
Le plus souvent, dans le développement de logiciels, vous ne pouvez pas vous permettre d’expérimenter, en raison de la pression des délais, des attentes, etc., mais oui, parfois, certains projets intéressants permettent une certaine expérimentation.
Dans le logiciel, nous ne pouvons pas faire des choses de base comme un dépôt bancaire… de 101 façons… il n’y aura que quelques façons de traiter un dépôt bancaire… il est donc logique de suivre un modèle établi et testé.
De plus, la plupart des modèles de conception ont des variations… certaines des variations sont si populaires que les variations seront également un nouveau type standard de modèle.
De nos jours, les projets logiciels sont censés (au moins implicitement) suivre une conception déjà établie d’un produit / logiciel similaire sur le marché.
C’est là que le fait de s’en tenir à un style standard de codage ou à un modèle de conception aide le développement de logiciels… à renforcer le développement, à supprimer les frais généraux liés à une nouvelle implémentation non testée, etc.,
Temps de développement de la fixation
Suivre un modèle de conception standard a également l’avantage de communiquer facilement à travers l’arborescence/hiérarchie des architectes logiciels, des responsables de modules, des chefs d’équipe, des développeurs, etc., sur « Comment » quelque chose doit être développé, et pas seulement « Quoi » doit être développé.
Parfois, cela aide même les équipes de test, car les testeurs sauraient par expérience que le code suivant un modèle de conception particulier pourrait probablement être testé d’une manière spécifique avec un ensemble d’outils de test dans un certain laps de temps, et ces conceptions connues pourraient ne pas avoir de défauts ou ont des défauts « connus ».
L’utilisation de Design Patterns n’enlève-t-elle pas une touche personnelle ?
Non. Tout d’abord parce que nous ne disons pas que vous suivez un modèle de conception et que rien d’autre ne se passe. La plupart des implémentations de projets ne partagent que des exigences de base avec d’autres projets et présenteront très probablement des écarts. La construction de ces déviations nécessitera une flexion et un étirement des modèles standard utilisés dans une implémentation.
C’est comme faire la pizza de manière standard, puis l’aromatiser / la présenter à différentes exigences, soit comme une pizza à tarte complète, soit une tarte coupée, ou autre.
Pour comprendre l’importance des modèles de conception, une chose est trèsimportant :
Les modèles de conception ne sont pas une technologie ou un cadre qu’une entreprise particulière ou un langage de programmation nous impose. Cela signifie que c’est comme un concept ouvert… vous êtes libre de le prendre, de l’utiliser, de le modifier selon vos besoins, et surtout… de le ressentir comme vous-même.
Tous les modèles de conception standard ou populaires, en fait, sont assez extensibles. Ils sont devenus populaires, d’abord, uniquement parce que beaucoup de gens l’utilisent… et beaucoup de gens l’utilisent uniquement parce qu’ils sont flexibles à leurs besoins.
Ou comment pensez-vous qu’un modèle de conception standard conviendrait à un projet dans le New Jersey pour une entreprise et également à Bangalore pour une entreprise différente et un type de projet différent.
Cela nous amène à « La plupart des modèles de conception sont génériques»… ce qui signifie qu’ils ne sont pas toujours utilisés pour créer le même type de logiciel. Vous n’entendrez peut-être pas des choses comme « Modèle de conception de logiciel bancaire » ou « Modèle de conception de logiciel de réseau social » utilisé dans les discussions courantes… mais seulement « Modèles de conception ».
Qui devrait être dérangé par les Design Patterns ?
- Tout comme un bon architecte en bâtiment développe ses compétences en matière de conception de bâtiments, en étudiant l’architecture et la conception de nombreux bâtiments et formes tout au long de sa vie, un architecte logiciel doit étudier et visualiser comment différents systèmes logiciels / technologiques à travers le monde sont conçus ou architecturé.
- Et tout comme la façon dont les travailleurs de la construction d’un bâtiment doivent être conscients des différentes manières de mettre en œuvre une conception de bâtiment, soit à partir de leur propre expérience, soit en la comprenant de l’architecte du bâtiment.
Les développeurs/programmeurs de logiciels doivent comprendre les modèles de conception logicielle de base et leur code d’implémentation… soit eux-mêmes, soit par l’architecte logiciel qui demande à l’équipe de le développer en suivant un modèle particulier.
Modèles de code de base
Dans les premières lignes de cet article, j’ai dit que n’importe quel programmeur aurait utilisé des modèles de conception. Voici quelques exemples très basiques de code suivant un modèle.
-
Voici un modèle de conception de filtre d’interception de base.
-
Masquer le code de copie
-
switch (condition){ case Value1: case Value2: default: }
-
Les déclencheurs d’événements, les gestionnaires d’événements .. relèvent du modèle de conception de base Sujet-Observateur. Nous discuterons de chaque norme de modèles, des variations populaires, avec des exemples.. bientôt.
-
Si vous avez utilisé un certain type de collections, comme Arraylist en C#, et itéré dans le tableau, vous avez utilisé un modèle de conception Iterator de base.
-
Le code ci-dessous est un exemple de modèle de base de gestion des exceptions / chaîne de responsabilité.
-
Masquer le code de copie
-
try{ }catch(Exception ex){ } finally{ }
Différents domaines des modèles de conception
Il existe différentes terminologies dans les logiciels autres que les modèles de conception… certaines d’entre elles sont souvent liées aux modèles de conception dont nous avons discuté jusqu’à présent… et certaines d’entre elles n’ont aucun rapport.
Ce dont nous avons discuté jusqu’à présent est parfois appelé «modèles de conception d’implémentation ».
Il y en a d’autres, comme les modèles d’architecture, les modèles de cadre, les modèles de langage (principalement appelés constructions de langage).
Ce sont des modèles posés à différents niveaux… comme les modèles de langage sont des modèles implémentés dans le cadre de langages de programmation comme C # / Java, en tant que fonctionnalités / constructions du langage .. certains d’entre eux que nous avons déjà vus.
Tous les exemples ci-dessus d’observateur de sujet, de filtre d’interception, etc., sont absorbés en tant que constructions de langage dans tous les langages de programmation de haut niveau populaires qui sont venus après C.
Les modèles d’architecture sont ces modèles standard d’architecture logicielle, faisant généralement référence à différentes méthodes de placement ou de liaison de modules ou de couches ou de niveaux, constituant l’application complète.
Ceci n’a aucun rapport avec les modèles de conception dans le sens de codage/programmation qui… mais ils partagent les mêmes réponses aux Pourquoi/Qu’est-ce qui est discuté dans cet article.
Les modèles de framework sont également sans rapport avec notre discussion sur les modèles de conception. Lorsque des frameworks tels que .NET implémentent des moyens spéciaux pour consigner facilement les erreurs ou tracer les routes d’exécution du code via les méthodes ou objets intégrés du framework, ces mécanismes sont appelés modèles de framework.
Certains exemples dans le .NET Framework incluent la fonctionnalité stackTrace, la fonctionnalité d’attribut de classe avec des accolades [] au-dessus des définitions de classe/méthode, etc. Lors de l’utilisation de telles fonctionnalités, nous codons avec les modèles intégrés du Framework.
J’espère que cet article vous aidera à fournir un aperçu des modèles de conception et des terminologies associées.
Jusqu’à présent, nous n’avons discuté que des normes et de leur importance, mais nous n’avons pas discuté des modèles standard eux-mêmes.
Licence
Cet article, ainsi que tout code source et fichiers associés, est sous licence The Code Project Open License (CPOL).