Introduction aux patrons de conception

Les patrons de conception représentent les meilleures pratiques, généralement adoptées par des développeurs de logiciels orientés objet expérimentés. Les patrons de conception sont des solutions à des problèmes généraux auxquels les développeurs de logiciels sont confrontés pendant le processus de développement logiciel. Ces solutions ont été résumées par de nombreux développeurs de logiciels par essais et erreurs sur une période considérable.

Les patrons de conception sont un ensemble de résumés d'expérience de conception de code utilisés de manière répétée, largement connus, catégorisés et catalogués. Le but de l'utilisation des patrons de conception est de réutiliser le code, de rendre le code plus facile à comprendre pour les autres et d'assurer la fiabilité du code. Il ne fait aucun doute que les patrons de conception sont gagnant-gagnant pour soi-même, pour les autres et pour le système. Les patrons de conception rendent la compilation du code véritablement fondée sur l'ingénierie, et les patrons de conception sont la pierre angulaire du génie logiciel, tout comme les briques et les pierres d'un bâtiment. L'utilisation raisonnable des patrons de conception dans les projets peut parfaitement résoudre de nombreux problèmes. Chaque patron a un principe correspondant dans la réalité. Chaque patron décrit un problème qui se produit de manière répétée autour de nous, ainsi que la solution centrale à ce problème. C'est aussi la raison pour laquelle les patrons de conception peuvent être largement appliqués.

Qu'est-ce que GOF (nom complet : Gang of Four) ?

En 1994, Erich Gamma、Richard Helm、Ralph Johnson et John Vlissides, ces quatre personnes, ont coécrit un livre intituléDesign Patterns - Elements of Reusable Object-Oriented Software(Nom de la traduction chinoise : Design Patterns - Éléments réutilisables de logiciel orienté objet)le livre, qui a été le premier à mentionner le concept de patrons de conception dans le développement logiciel.

Gang of FourGOF (nom complet : Gang of Four)Les patrons de conception qu'ils ont proposés sont principalement basés sur les principes de conception orientée objet suivants.

  • Programmer vers une interface, et non vers une implémentation.
  • Privilégiez la composition d'objets à l'héritage.

Utilisation des patrons de conception

Deux utilisations principales des patrons de conception dans le développement logiciel.

Une plateforme commune pour les développeurs

Les patrons de conception fournissent un système de terminologie standard, spécifique à des scénarios particuliers. Par exemple, le patron de conception Singleton signifie utiliser un objet unique, de sorte que tous les développeurs familiarisés avec le patron de conception Singleton puissent utiliser un objet unique, et ainsi puissent indiquer aux autres que le programme utilise le patron Singleton.

Bonne pratique

Les patrons de conception ont connu une longue période de développement et fournissent les meilleures solutions aux problèmes généraux rencontrés dans le processus de développement logiciel. L'apprentissage de ces patrons aide les développeurs moins expérimentés à apprendre la conception logicielle de manière simple et rapide.

Types de patrons de conception

Selon l'ouvrage de référence sur les patrons de conceptionDesign Patterns - Elements of Reusable Object-Oriented Software(ChinesetranslateFirst name:Design Patterns - ReusableofObject-Oriented软件element)Comme mentionné, il existe au total 23 patrons de conception. Ces patrons peuvent être divisés en trois grandes catégories : les patrons de création, les patrons structurels et les patrons comportementaux. Bien sûr, nous aborderons également une autre catégorie de patrons de conception : les patrons de conception J2EE.

Numéro de sériePatrons et descriptionsy compris
1Patron de création
Ces patrons de conception permettent de masquer la logique de création lors de la création d'objets, plutôt que d'utiliser l'opérateur new pour instancier directement des objets. Cela rend le programme plus flexible pour déterminer quels objets doivent être créés pour une instance donnée.
  • Patron Fabrique(Factory Pattern)
  • Patron de conception Fabrique abstraite
  • Patron de conception Singleton
  • Patron Builder
  • Patron Prototype
2Patron structurel
Ces patrons se concentrent sur la composition et les relations entre les objets, visant à résoudre la manière de construire des structures de classes et d'objets flexibles et réutilisables.
  • Patron Adaptateur
  • Patron Pont
  • Patron Filtre (Filtre, Patron Critère)
  • Patron Composite
  • Patron Décorateur
  • Patron Façade
  • Patron Poids-Mouche
  • Patron Proxy
3Patron comportemental
Ces patrons se concentrent sur la communication et l'interaction entre les objets, visant à résoudre l'attribution des responsabilités entre les objets et l'encapsulation des algorithmes.
  • Patron Chaîne de responsabilité
  • Patron Commande
  • Patron d'interpréteur
  • Patron Itérateur
  • Patron Médiateur
  • Patron Mémento
  • Patron Observateur
  • Patron État
  • Patron Objet Nul
  • Patron Stratégie
  • Patron Modèle
  • Patron Visiteur
4Patrons J2EE
Ces patrons de conception accordent une attention particulière à la couche de présentation. Ces patrons ont été identifiés par Sun Java Center.
  • Patron MVC
  • Patron Business Delegate
  • Patron Entité Composite
  • Patron d'objet d'accès aux données
  • Modèle de contrôleur frontal
  • Patron Filtre Intercepteur
  • Patron Localisateur de services
  • Patron d'objet de transfert

Ci-dessous, une image est utilisée pour décrire les relations entre les patrons de conception dans leur ensemble :

设计模式之间的关系

Avantages des patrons de conception

  • Fournit un vocabulaire et des concepts de conception partagés, permettant aux développeurs de mieux communiquer et de comprendre les intentions de conception des uns et des autres.
  • Fournit des solutions éprouvées qui peuvent améliorer la maintenabilité, la réutilisabilité et la flexibilité du logiciel.
  • Favorise la réutilisation du code, en évitant la duplication de la conception et de l'implémentation.
  • En suivant les patrons de conception, les erreurs et les problèmes du système peuvent être réduits, et la qualité du code peut être améliorée.

Les six principes des patrons de conception

1. Principe ouvert/fermé

Le principe ouvert/fermé signifie :Ouvert à l'extension, fermé à la modificationLorsque le programme doit être étendu, le code d'origine ne doit pas être modifié, ce qui permet d'obtenir un effet de remplacement à chaud. En bref, il s'agit de rendre le programme hautement extensible et facile à maintenir et à mettre à niveau. Pour obtenir cet effet, nous devons utiliser des interfaces et des classes abstraites, ce que nous mentionnerons dans la conception spécifique ultérieure.

2. Principe de substitution de Liskov

Le principe de substitution de Liskov est l'un des principes de base de la conception orientée objet. Le principe de substitution de Liskov stipule que partout où une classe de base peut apparaître, une sous-classe doit également pouvoir apparaître. LSP est la pierre angulaire de l'héritage et de la réutilisation. Ce n'est que lorsqu'une classe dérivée peut remplacer la classe de base sans affecter les fonctionnalités de l'unité logicielle que la classe de base peut être véritablement réutilisée, et la classe dérivée peut également ajouter de nouveaux comportements sur la base de la classe de base. Le principe de substitution de Liskov est un complément au principe ouvert/fermé. L'étape clé de la mise en œuvre du principe ouvert/fermé est l'abstraction, et la relation d'héritage entre les classes de base et les sous-classes est la mise en œuvre concrète de l'abstraction. Par conséquent, le principe de substitution de Liskov est une spécification des étapes concrètes de mise en œuvre de l'abstraction.

3. Principe d'inversion des dépendances

Ce principe est le fondement du principe ouvert/fermé. Contenu spécifique : programmer en fonction des interfaces, dépendre des abstractions plutôt que des implémentations concrètes.

4. Principe de ségrégation des interfaces (Interface Segregation Principle)

La signification de ce principe est : utiliser plusieurs interfaces isolées est préférable à l'utilisation d'une seule interface. Il a également une autre signification : réduire le couplage entre les classes. De là, on peut voir que les modèles de conception sont en fait des idées de conception logicielle issues de l'architecture logicielle à grande échelle, facilitant la mise à niveau et la maintenance, en mettant l'accent sur la réduction des dépendances et du couplage.

5. Loi de Déméter, également connue sous le nom de principe de connaissance minimale (principe de Déméter)

Le principe de connaissance minimale signifie : une entité doit interagir le moins possible avec d'autres entités, de sorte que les modules fonctionnels du système soient relativement indépendants.

6. Principe de réutilisation par composition

Le principe de réutilisation par composition signifie : essayer d'utiliser la composition/l'agrégation au lieu de l'héritage.

autres extensions