Modèle de conception (Modèle de conception)
Modèle de conception (Modèle de conception) est un ensemble d'expériences de conception de code classifiées et cataloguées qui sont utilisées à plusieurs reprises et sont 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 soi-même, pour les autres et pour le système ; les modèles de conception font du codage une véritable ingénierie. Les modèles de conception sont la pierre angulaire du génie logiciel, tout comme la structure d'un bâtiment.
Pourquoi devrions-nous prôner le Design Pattern ?
La raison fondamentale est de réutiliser le code et d'augmenter la maintenabilité.
Alors, comment pouvons-nous parvenir à réutiliser le code ? Il existe plusieurs principes orientés objet : le principe ouvert et fermé (OCP), le principe de substitution de Liskov (LSP), le principe d'inversion de dépendance (DIP), le principe de ségrégation d'interface, ISP), le principe de réutilisation composite/agrégat (CARP), le principe de moindre connaissance ( PLK, également appelée loi de Déméter). Le principe d’ouverture et de fermeture est idéaliste et constitue le but ultime de la conception orientée objet. Plusieurs autres éléments peuvent être considérés comme des modalités de mise en œuvre du principe d’ouverture et de fermeture.
Les modèles de conception mettent en œuvre ces principes, atteignant ainsi l'objectif de réutilisation du code et d'augmentation de la maintenabilité.
23 modèles
Les modèles de conception sont divisés en trois types, soit un total de 23 types :
Abstract Factory
(Modèle d'usine abstrait) : Fournit an Créer une interface pour une série d'objets liés ou interdépendants sans spécifier leurs classes concrètes.
Adapter
(Modèle d'adaptateur) : Convertissez l'interface d'une classe en une autre interface souhaitée par le client. Le modèle Adaptateur permet aux classes qui autrement ne fonctionneraient pas ensemble en raison d’interfaces incompatibles de fonctionner ensemble.
Bridge
(Mode Bridge) : Séparez la partie abstraite de sa partie implémentation afin qu'elles puissent toutes deux changer indépendamment.
Builder
(Modèle de constructeur) : Séparez la construction d'un objet complexe de sa représentation, afin que le même processus de construction puisse créer différentes représentations.
Chain of Responsibility
(Mode Chaîne de Responsabilité) : Pour découpler l'expéditeur et le destinataire de la demande afin que plusieurs objets aient la possibilité de traiter la demande. Ces objets sont connectés dans une chaîne et la requête est transmise le long de la chaîne jusqu'à ce qu'un objet la gère.
Command
(Mode commande) : encapsule une requête en tant qu'objet, vous permettant de paramétrer les clients avec différentes requêtes ; met en file d'attente ou enregistre les requêtes et prend en charge les opérations annulables.
Composite
(Mode combiné) : Combinez des objets dans une structure arborescente pour représenter une hiérarchie « partie-tout ». Il permet aux clients d'utiliser des objets uniques et des objets composites de manière cohérente.
Decorator
(Mode Décoration) : Ajoutez dynamiquement des responsabilités supplémentaires à un objet. En termes de fonctionnalités étendues, il est plus flexible que le sous-classement.
Facade
(Mode Façade) : Fournit une interface cohérente pour un ensemble d'interfaces dans le sous-système. Le mode Façade définit une interface de haut niveau qui rend ce sous-système plus facile à utiliser.
Factory Method
(Modèle d'usine) : définissez une interface pour créer des objets et laissez les sous-classes décider quelle classe instancier. La méthode Factory diffère l’instanciation d’une classe à ses sous-classes.
Flyweight
(mode poids mouche) : utilisez la technologie de partage pour prendre en charge efficacement un grand nombre d'objets à granularité fine.
Interpreter
(Parser Pattern) : Étant donné une langue, définissez une représentation de sa grammaire et définissez un interprète qui utilise cette représentation pour interpréter des phrases dans la langue.
Iterator
(Modèle d'itérateur) : Fournit un moyen d'accéder séquentiellement aux éléments individuels d'un objet agrégé sans exposer la représentation interne de l'objet.
Mediator
(Mode médiation) : utilisez un objet de médiation pour encapsuler une série d'interactions d'objets. Les médiateurs suppriment le besoin pour les objets de se référencer explicitement les uns les autres, de sorte qu'ils sont faiblement couplés et peuvent modifier indépendamment leurs interactions.
Memento
(Mode Mémo) : Capturez l'état interne d'un objet et enregistrez cet état à l'extérieur de l'objet sans détruire l'encapsulation. Cela vous permet de restaurer l'objet à son état enregistré ultérieurement.
Observer
(Modèle observateur) : définissez une relation de dépendance un-à-plusieurs entre les objets, de sorte que lorsque l'état d'un objet change, tous les objets qui en dépendent sont notifiés et automatiquement actualisés.
Prototype
(Mode Prototype) : Utilisez une instance de prototype pour spécifier le type d'objet à créer, et créez de nouveaux objets en copiant ce prototype.
Proxy
(Mode proxy) : Fournit un proxy pour d'autres objets pour contrôler l'accès à cet objet.
Singleton
(mode singleton) : Assurez-vous qu'une classe n'a qu'une seule instance et fournissez un point d'accès global pour y accéder. Le modèle singleton est l’un des modèles de conception les plus simples, mais pour les développeurs Java, il présente de nombreux défauts. Dans sa chronique de septembre, David Geary discute du modèle singleton et de la manière de gérer ses pièges face au multithreading, aux chargeurs de classes et à la sérialisation.
State
(Mode État) : Permet à un objet de modifier son comportement lorsque son état interne change. L'objet semble avoir modifié la classe à laquelle il appartient.
Strategy
(Modèle de stratégie) : Définir une série d'algorithmes, les encapsuler un par un et les rendre interchangeables. Ce modèle permet à l'algorithme de changer indépendamment des clients qui l'utilisent.
Template Method
(Template Method Pattern) : Définir le squelette d'un algorithme dans une opération, tout en reportant certaines étapes aux sous-classes. La méthode modèle permet aux sous-classes de redéfinir certaines étapes spécifiques d’un algorithme sans modifier la structure de l’algorithme.
Visitor
(Mode Visiteur) : Représente une opération qui agit sur chaque élément d'une structure d'objet. Il permet de définir de nouvelles opérations qui agissent sur chaque élément sans changer sa classe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!