Introduction aux modèles de conception
Les modèles de conception représentent les meilleures pratiques et sont couramment utilisés par les développeurs de logiciels orientés objet expérimentés. Les modèles de conception sont des solutions aux problèmes courants rencontrés par les développeurs de logiciels au cours du processus de développement de logiciels. Ces solutions sont le résultat d’essais et d’erreurs effectués par de nombreux développeurs de logiciels sur une longue période.
Un modèle de conception est un ensemble d'expériences de conception de code classifiées et cataloguées qui sont utilisées de manière répétée et connues de la plupart des gens. Le but de l'utilisation de modèles de conception est de réutiliser le code, de le rendre plus facile à comprendre par les autres et de garantir sa fiabilité. Il ne fait aucun doute que les modèles de conception sont gagnant-gagnant pour nous-mêmes, pour les autres et pour le système. Les modèles de conception font de la compilation de code une véritable ingénierie. Les modèles 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 modèles de conception dans les projets peut parfaitement résoudre de nombreux problèmes. Chaque modèle a des principes correspondants dans la réalité pour y correspondre. Chaque modèle décrit un problème qui revient sans cesse autour de nous, et la solution au problème, c'est pourquoi le design. les modèles peuvent être largement utilisés.
Qu'est-ce que GOF (Gang of Four) ?
En 1994, Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides ont co-écrit un livre intitulé Design Patterns - Elements of Realistic Object-Oriented Software (traduction chinoise : Design Patterns - Realistic Object-Oriented Software). Software Elements) livre, qui a mentionné pour la première fois le concept de modèles de conception dans le développement de logiciels.
Les quatre auteurs sont collectivement connus sous le nom de GOF (Gang of Four) . Les modèles de conception qu'ils proposent sont principalement basés sur les principes de conception orientés objet suivants.
Programme à l'interface plutôt qu'à l'implémentation.
Préférez la composition d'objets à l'héritage.
Utilisations des modèles de conception
Deux utilisations principales des modèles de conception dans le développement de logiciels.
Une plateforme commune pour les développeurs
Les modèles de conception fournissent un système standard de terminologie spécifique à des scénarios spécifiques. Par exemple, le modèle de conception singleton signifie utiliser un seul objet afin que tous les développeurs familiers avec le modèle de conception singleton puissent utiliser l'objet unique et se dire que le programme utilise le modèle singleton.
Meilleures pratiques
Les modèles de conception ont été développés sur une longue période de temps et fournissent les meilleures solutions aux problèmes courants rencontrés lors du développement de logiciels. L'apprentissage de ces modèles aide les développeurs moins expérimentés à apprendre la conception de logiciels de manière simple et rapide.
Types de modèles de conception
Selon l'ouvrage de référence sur les modèles de conceptionDesign Patterns - Éléments de logiciels orientés objet réutilisables (traduction chinoise : Design Patterns - Éléments logiciels réutilisables orientés objet ) mentionné dans , il existe un total de 23 modèles de conception. Ces modèles peuvent être divisés en trois grandes catégories : les modèles créationnels, les modèles structurels et les modèles comportementaux. Bien entendu, nous aborderons également une autre catégorie de modèles de conception : les modèles de conception J2EE.
Numéro de série | Mode et description | comprend |
---|---|---|
1 | Modèles créatifs Ces modèles de conception permettent de masquer la logique de création lors de la création d'un objet, plutôt que d'instancier l'objet directement à l'aide de nouveaux opérateurs. Cela permet au programme d'être plus flexible dans la détermination des objets à créer pour une instance donnée. |
|
2 | Modèles structurels Ces modèles de conception se concentrent sur la combinaison de classes et d'objets. Le concept d'héritage est utilisé pour composer des interfaces et définir la manière dont les objets composés acquièrent de nouvelles fonctionnalités. |
|
3 | Modèle comportemental Ces modèles de conception accordent une attention particulière à la relation entre les objets de communication. |
|
4 | Modèles J2EE Ces modèles de conception se concentrent spécifiquement sur la couche de présentation. Ces modes sont certifiés par Sun Java Center. |
|
Ce qui suit utilise une image pour décrire la relation globale entre les modèles de conception :
Les six principes des modèles de conception
1. Principe de fermeture
Le principe d'ouverture et de fermeture signifie : Ouvert pour extension, fermé pour modification. Lorsque le programme doit être étendu, le code original ne peut pas être modifié pour obtenir un effet remplaçable à chaud. En bref, il s’agit de rendre le programme évolutif et facile à maintenir et à mettre à niveau. Pour obtenir cet effet, nous devons utiliser des interfaces et des classes abstraites, que nous mentionnerons plus tard dans la conception spécifique.
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 dit que partout où une classe de base peut apparaître, une sous-classe peut certainement apparaître. LSP est la pierre angulaire de la réutilisation de l'héritage. Ce n'est que lorsque la classe dérivée peut remplacer la classe de base et que la fonction de l'unité logicielle n'est pas affectée que la classe de base peut être véritablement réutilisée et que la classe dérivée peut également en ajouter de nouvelles sur la base de la classe de base. Le principe de substitution de Liskov est un complément au principe d'ouverture et de fermeture. L'étape clé pour réaliser le principe d'ouverture et de fermeture est l'abstraction, et la relation d'héritage entre les classes de base et les sous-classes est l'implémentation spécifique de l'abstraction, donc le principe de substitution de Liskov est une spécification des étapes spécifiques pour réaliser l'abstraction.
3. Principe d'inversion de dépendance
Ce principe est à la base du principe d'ouverture et de fermeture Le contenu spécifique : pour la programmation d'interface, s'appuyer sur l'abstraction plutôt que sur Dépend. les détails.
4. Principe de ségrégation des interfaces
Ce principe signifie : il est préférable d'utiliser plusieurs interfaces isolées plutôt que d'utiliser une seule interface. Cela a aussi une autre signification : réduire le couplage entre les classes. On peut voir que les modèles de conception sont en fait des idées de conception de logiciels qui partent d'une architecture logicielle à grande échelle et sont faciles à mettre à niveau et à maintenir. Ils mettent l'accent sur la réduction des dépendances et du couplage.
5. La loi de Déméter, également connue sous le nom de principe de Déméter
Le principe le moins connu signifie : une entité doit interagir avec d'autres entités le moins possible d'interactions se produisent entre elles. , rendant les modules fonctionnels du système relativement indépendants.
6. Principe de réutilisation composite
Le principe de réutilisation composite signifie : essayez d'utiliser la synthèse/agrégation au lieu de l'héritage.