Vue d'ensemble des modèles de conception, comment classer les modèles de conception en fonction de l'objectif et de la portée


      Cet article présente principalement les concepts de modèles de conception, la classification, les éléments de base, les avantages et d'autres fonctionnalités des modèles de conception, jetant les bases de chaque blog de modèles de conception sous la colonne Modèle de conception de l'édition Java.
Principes de conception orientée objet: https://blog.csdn.net/qq_34896730/article/details/105352240

1. Qu'est-ce qu'un modèle de conception

       Design Pattern (Design Pattern) est un ensemble d'utilisations répétées, la plupart des gens savent qu'après le résumé de l'expérience de conception de code, l'utilisation de modèles de conception vise à rendre le code réutilisable plus facile à comprendre et à améliorer la fiabilité du code. Un modèle de conception est une technique pour documenter des solutions à des problèmes de conception qui sont constamment récurrents dans les systèmes logiciels, et est également une technique pour partager une expérience de conception experte.
      Quatre célèbres universitaires en génie logiciel qui se sont appelés "Gang of Four (GoF, Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides)" de 1991 à 1992. Ils ont publié 23 types de Les modèles de conception utilisés plus fréquemment dans le développement de logiciels visent à utiliser des modèles pour unifier l'écart entre l'analyse, la conception et la mise en œuvre de méthodes orientées objet.
       Le GoF définit le modèle de conception comme suit:
       Le modèle de conception est un ensemble de solutions personnalisées pour résoudre un problème de conception de logiciel commun dans un environnement spécifique, qui décrit l'interaction entre les objets et les classes.

2. Éléments de base des modèles de conception

      Les modèles de conception incluent généralement le nom du modèle, le problème, le but, la solution, l'effet, l'exemple de code et les modèles de conception associés. Les éléments clés sont les quatre suivants.
      1. Nom du modèle (nom du modèle) Le
      nom du modèle décrit le problème, la solution et l'effet du modèle en un ou deux mots, afin de mieux comprendre le modèle et faciliter la communication entre les développeurs. Ou modélisez les résultats. Lors de l'apprentissage des modèles de conception, vous devez d'abord vous souvenir avec précision des noms chinois et anglais du modèle. Dans les bibliothèques de classes existantes, de nombreux noms de classe qui utilisent des modèles de conception contiennent généralement le nom du modèle de conception utilisé. Si le nom de classe d'une classe est XXXAdapter, cette classe est une classe d'adaptateur, le modèle d'adaptateur est utilisé au moment du design; si le nom de classe d'une classe est XXXFactory, alors la classe est une classe d'usine, elle doit contenir une méthode d'usine pour renvoyer un objet d'instance d'une classe .
      2. Problème (Problème) Le
      problème décrit quand le mode doit être utilisé. Il contient les problèmes de conception et les raisons des problèmes. Certains de ces problèmes sont des problèmes de conception spécifiques, tels que la façon d'utiliser des objets pour encapsuler des états ou des algorithmes de représentation d'objets, etc., ou il peut y avoir des classes ou des structures d'objets inflexibles dans le système, ce qui entraîne une mauvaise maintenabilité du système. Parfois, la section de description du problème d'un modèle peut contenir une série de conditions préalables qui doivent être remplies lors de l'utilisation du modèle. Par exemple, lorsque vous utilisez le mode pont, il doit y avoir deux dimensions indépendamment changeantes de la classe dans le système et lorsque vous utilisez le mode combiné, il doit y avoir une hiérarchie de l'ensemble et d'une partie du système. Tout en décrivant le problème, il détermine en fait l'environnement correspondant au modèle et la motivation pour utiliser le modèle.
      3. Solution
      La solution décrit les composants du modèle de conception, ainsi que les relations, les responsabilités et les modes de collaboration entre ces composants. Les modèles sont un modèle universel. Ils peuvent être utilisés à diverses occasions. La solution ne décrit pas une conception et une mise en œuvre spécifiques et spécifiques, mais fournit une description abstraite du problème de conception et comment utiliser une combinaison d'éléments d'importance générale ( Classe et combinaison d'objets) pour résoudre ce problème, l'utilisateur doit maîtriser le diagramme de classe, comprendre la signification de chaque rôle dans le diagramme de classe et la relation entre eux, et doit maîtriser un code de base qui implémente le modèle afin de faciliter le développement réel Appliquez raisonnablement des modèles de conception.
      4. Les effets (conséquences)
      décrivent les effets de l'application de mode et les problèmes à prendre en compte lors de l'utilisation des modes. L'effet comprend principalement l'analyse des avantages et des inconvénients du modèle. Nous devons savoir qu'aucune solution n'est parfaite à 100% et qu'une évaluation et une sélection raisonnables sont nécessaires lors de l'utilisation du modèle de conception. Bien qu'un modèle présente des avantages à certains égards et puisse présenter des défauts à un autre, il est nécessaire de considérer les effets du modèle de manière exhaustive. Lors de l'évaluation de l'effet, analysez à travers les principes de conception orientés objet, tels que juger si un motif est conforme au principe de responsabilité unique ou s'il est conforme au principe d'ouverture et de fermeture.
      Outre les quatre éléments de base ci-dessus, la description complète du modèle de conception comprend généralement l'alias (autres noms) du modèle, la classification du modèle (la catégorie à laquelle appartient le modèle) et l'applicabilité du modèle (lorsque le modèle de conception peut être utilisé) , Rôles de modèle (c'est-à-dire participants au modèle, classes et objets dans le modèle et responsabilités entre eux), instances de modèle (en utilisant des exemples pour approfondir la compréhension du modèle), applications de modèle (utilisation du modèle dans les systèmes existants) , Extension de mode (quelques améliorations de ce mode, d'autres modes qui lui sont liés et d'autres connaissances étendues), etc.

3. Classification des modèles de conception

      Il existe deux méthodes générales de classification pour les modèles de conception:
      1. Classification selon l'objectif Les
      modèles de conception peuvent être divisés en trois types: créatifs, structurels et comportementaux selon l'objectif (à quoi sert le modèle).
      (1) Le mode de création est principalement utilisé pour créer des objets. Le GoF propose 5 modes de création, à savoir la méthode d'usine, l'usine abstraite, le constructeur et le prototype. ) Et le mode singleton (Singleton).
      (2) Le mode structurel est principalement utilisé pour gérer la combinaison de classes ou d'objets. Le GoF propose 7 modes structurels, à savoir le mode adaptateur (adaptateur), le mode pont (pont), le mode combinaison (composite), le mode décoration (décorateur). , Mode d'apparence (Façade), mode d'élément fly (Flyweight) et mode proxy (Proxy).
      (3) Le mode comportemental est principalement utilisé pour décrire comment les classes ou les objets interagissent et comment attribuer les responsabilités. Le GoF propose 11 modes comportementaux, à savoir la chaîne de responsabilité, le mode commande et le mode interprète ( Interprète), mode Iterator, mode Mediator, mode Memento, mode Memento, mode Observer, mode State, mode Strategy, mode Method Template Mode visiteur (Visiteur).
      2. Selon le
      mode de conception de la classification de la portée Selon la portée (c'est-à-dire que le mode est principalement utilisé pour traiter la relation entre les classes ou la relation entre les objets), il peut être divisé en deux types: le mode classe et le mode objet.
      (1)Le modèle de classe gère la relation entre les classes et les sous-classes. Ces relations sont établies par héritage et déterminées au moment de la compilation. Il s'agit d'une relation statique.
      (2) Le modèle objet gère les relations entre les objets. Ces relations changent au moment de l'exécution et sont plus dynamiques.

4. Introduction au modèle de conception du GoF

      Un total de 23 modèles de conception sont décrits dans le livre classique du GoF "Modèles de conception: la base des logiciels orientés objet réutilisables". Ces 23 modèles sont présentés dans le tableau 1, respectivement.

Tableau 1 Liste des 23 modèles de conception du GoF
Portée / objectif Mode de création Modèle structurel Modèle comportemental
Modèle de classe Modèle de méthode d'usine (Classe) Mode adaptateur Modèle de
méthode de modèle de modèle d'interprétation
Mode objet Motif de
constructeur de motif abstrait usine Motif de
prototype Motif
singleton
(Objet) Mode adaptateur Mode
pont Mode
combiné Mode
décoration Mode
apparence Mode
survol Mode
proxy
Modèle de chaîne de responsabilité Modèle de
commande Modèle d'
itérateur Modèle de
médiateur Modèle de
mémo Modèle d'
observateur Modèle de
statut Modèle de
stratégie Modèle de
visiteur
Tableau 2 Brève description des 23 modèles de conception du GoF
Catégorie de mode Nom du mode Description du mode
Modèles créatifs Modèle d'usine abstraite Fournir une interface pour créer une série d'objets liés ou interdépendants sans spécifier leurs classes spécifiques
Modèle de générateur Séparez la construction d'un objet complexe de sa représentation afin que le même processus de construction puisse créer des représentations différentes
Modèle de méthode d'usine Définissez une interface pour créer des objets, mais laissez les sous-classes décider de la classe à instancier. Le modèle de méthode d'usine retarde l'instanciation d'une classe dans ses sous-classes
Modèle de prototype Utilisez l'instance de prototype pour spécifier le type d'objet à créer et utilisez ce prototype pour créer un nouvel objet
Motif singleton Assurez-vous qu'il n'y a qu'une seule instance d'une classe et fournissez un point d'accès global pour accéder à cette instance unique
Modèles structurels Modèle d'adaptateur Convertissez l'interface d'une classe en une autre interface souhaitée par le client. Le modèle d'adaptateur permet aux classes avec des interfaces incompatibles de fonctionner ensemble
Modèle de pont Découper la partie abstraite de sa partie d'implémentation afin que les deux puissent changer indépendamment
Motif composite Combiner plusieurs objets pour former une structure arborescente afin de représenter une structure hiérarchique avec une relation partie-entière. Le mode de combinaison permet au client de traiter uniformément les objets uniques et les objets combinés
Motif de décorateur Ajoutez dynamiquement des responsabilités supplémentaires à l'objet. En termes de fonctionnalité étendue, les motifs décoratifs offrent une alternative plus flexible que l'utilisation de sous-classes
Motif de façade Fournissez une entrée unifiée pour un groupe d'interfaces dans le sous-système. Le mode d'apparence définit une interface de haut niveau qui facilite l'utilisation de ce sous-système
Modèle de poids mouche Utilisation de la technologie de partage pour soutenir efficacement la réutilisation d'un grand nombre d'objets à grain fin
Modèle de proxy Fournir un proxy ou un espace réservé pour un objet et l'objet proxy pour contrôler l'accès à l'objet d'origine
Modèles comportementaux Modèle de chaîne de responsabilité Évitez de coupler l'expéditeur et le destinataire d'une demande, connectez plusieurs objets dans une chaîne et passez la demande le long de la chaîne jusqu'à ce qu'un objet puisse la gérer
Modèle de commande Encapsuler une demande en tant qu'objet, afin que différentes demandes puissent être utilisées pour paramétrer le client, mettre la demande en file d'attente ou enregistrer le journal des demandes et prendre en charge les opérations réversibles
Modèle d'interprète Étant donné une langue, définissez une représentation de sa grammaire et définissez un interprète qui utilise la représentation pour interpréter des phrases dans la langue
Modèle d'itérateur Fournit une méthode pour accéder séquentiellement à chaque élément dans un objet agrégé sans exposer la représentation interne de l'objet
Modèle de médiateur Définissez un objet pour encapsuler l'interaction d'une série d'objets. Le modèle intermédiaire fait que chaque objet n'a pas besoin d'être explicitement référencé les uns aux autres, de sorte qu'il est faiblement couplé, et l'interaction entre eux peut être modifiée indépendamment
Motif souvenir Capturez l'état interne d'un objet sans détruire l'encapsulation et enregistrez cet état en dehors de l'objet, afin que l'objet puisse être restauré à l'état enregistré d'origine plus tard
Modèle d'observateur Définissez une relation de dépendance un à plusieurs entre les objets, de sorte que chaque fois qu'un état d'objet change, ses objets dépendants associés sont notifiés et automatiquement mis à jour
Modèle d'état Permet à un objet de modifier son comportement lorsque son état interne change. L'objet semble modifier sa classe
Modèle de stratégie Définissez une série d'algorithmes, encapsulez chaque algorithme et permettez à d'autres de se remplacer. Le modèle de stratégie permet à l'algorithme de changer indépendamment des clients qui l'utilisent
Modèle de méthode de modèle Définissez le cadre de l'algorithme dans une opération et retardez certaines étapes dans les sous-classes. Le modèle de méthode de modèle permet aux sous-classes de redéfinir certaines étapes spécifiques d'un algorithme sans changer la structure d'un algorithme
Modèle de visiteur Représente une opération qui agit sur chaque élément de la structure d'objet. Le modèle de visiteur peut définir de nouvelles opérations sur ces éléments sans changer la classe de chaque élément
      Il convient de noter que ces 23 modèles de conception n'existent pas isolément et qu'il existe des liens entre de nombreux modèles. Par exemple, lorsque les éléments de fonctionnement de l'objet aboutissent au modèle de visiteur, il est généralement nécessaire d'utiliser le modèle d'itérateur et de définir la terminaison dans le modèle d'interpréteur. Les expressions symboliques et les expressions non terminales peuvent utiliser des modèles combinés; en outre, vous pouvez concevoir le même système en combinant deux modèles ou plus, en tirant pleinement parti des avantages de chaque modèle tout en leur permettant de travailler ensemble pour compléter certains Un travail de conception plus compliqué.

5. Avantages des modèles de conception

      Le modèle de conception est un plan de conception réussi qui peut être atteint par la maintenabilité et la réutilisation de nombreux excellents systèmes logiciels. L'utilisation de ces plans évitera d'effectuer des travaux répétitifs et peut concevoir un système logiciel de haute qualité. Plus précisément, les avantages des modèles de conception sont les suivants:

      (1) 设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通过的设计词汇和一种通用的语言以方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。对于使用不同编程语言的开发和设计人员可以通过设计模式来交流系统设计方案,每一个模式都对应一个标准的解决方案,设计模式可以降低开发人员理解系统的复杂度。
      (2) 设计模式使人们可以更加简单、方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。
      (3) 设计模式使得设计方案更加灵活,且易于修改。在很多设计模式中广泛使用了开闭原则、依赖倒转原则、迪米特法则等面向对象设计原则,使得系统具有较好的可维护性,真正实现可维护性的复用。在软件开发中合理地使用设计模式可以使系统中的一些组成部分在其他系统中得以重用,而且在此基础上进行二次开发很方便。正因为设计模式具有该优点,所以在JDK、Struts、Spring、Hibernate、JUnit等类库和框架的设计中大量使用了设计模式。
      (4) 设计模式的使用将提高软件系统的开发效率和软件质量,并且在一定程度上节约设计成本。设计模式是一些通过多次实践得以证明的行之有效的解决方案,这些解决方案通常是针对某一类问题最佳的设计方案,因此可以帮助设计人员构造优秀的软件系统,并可以直接重用这些设计经验,节省系统设计成本。
      (5) 设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件饿设计水平和代码质量。

发布了59 篇原创文章 · 获赞 20 · 访问量 3622

Je suppose que tu aimes

Origine blog.csdn.net/qq_34896730/article/details/105324092
conseillé
Classement