Maison >Problème commun >Une explication des concepts de base des modèles de conception de logiciels
Les modèles de conception font référence aux solutions que les développeurs résument pour les problèmes qu'ils rencontrent à plusieurs reprises lors du développement de logiciels. Cet article présente principalement des modèles de conception. Les amis intéressés peuvent y jeter un œil.
Principe ouvert et fermé : une entité logicielle telle en tant que classe, les modules et les fonctions doivent être ouverts pour extension et fermés pour modification.
Principe de substitution de Richter : Tous les endroits qui font référence à une classe de base doivent pouvoir utiliser de manière transparente les objets de ses sous-classes.
Principe d'inversion de dépendance : Les modules de haut niveau ne doivent pas dépendre de modules de bas niveau, les deux doivent dépendre de leurs abstractions ; les abstractions ne doivent pas dépendre des détails ;
Principe de responsabilité unique : Ne pas avoir plus d'une raison pour un changement de classe. En termes simples, une classe n'est responsable que d'une seule responsabilité.
Principe d'isolation des interfaces : le client ne doit pas s'appuyer sur des interfaces dont il n'a pas besoin ; la dépendance d'une classe à l'égard d'une autre classe doit être basée sur la plus petite interface.
Loi de Déméter : Un objet doit garder le moins de connaissances sur les autres objets
Usine abstraite (Abstract Factory Pattern) : Fournit une interface pour créer une série d'objets liés ou interdépendants sans spécifier leurs classes concrètes.
Adaptateur (modèle d'adaptateur) : Convertissez l'interface d'une classe en une autre interface souhaitée par le client. Le modèle Adaptateur permet à des classes qui autrement ne fonctionneraient pas ensemble en raison d’interfaces incompatibles de fonctionner ensemble.
Bridge (mode pont) : Sépare la partie abstraite de sa partie implémentation afin qu'elles puissent toutes changer indépendamment.
Builder (Builder Pattern) : Sépare 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.
Chaîne de responsabilité (mode chaîne de responsabilité) : Afin de 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.
Commande (mode commande) : Encapsule une requête en tant qu'objet, vous permettant de paramétrer les clients avec différentes requêtes ; file d'attente ou enregistre les requêtes et prend en charge l'opération annulée.
Composite (mode composite) : Combinez des objets dans une structure arborescente pour représenter une hiérarchie "partie-tout". Composite permet aux clients d'utiliser des objets uniques et des objets composites de manière cohérente.
Décorateur (Modèle Décorateur) : Ajoutez dynamiquement des responsabilités supplémentaires à un objet. En termes de fonctionnalités étendues, le modèle Decorator est plus flexible que la méthode de sous-classement.
Façade (mode façade) : Fournit une interface cohérente pour un ensemble d'interfaces du sous-système. Le mode Façade définit une interface de haut niveau, ce qui rend le sous-système plus facile à utiliser.
Méthode Factory (Factory Method Pattern) : 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 à grain fin.
Interprète (mode interprète) : étant donné une langue, définir une représentation de sa grammaire et définir un interprète qui utilise cette représentation pour interpréter des phrases dans la langue.
Itérateur (modèle d'itérateur) : Fournit une méthode pour accéder séquentiellement aux éléments individuels d'un objet agrégé sans exposer la représentation interne de l'objet.
Médiateur (Modèle Médiateur) : Utilisez un objet médiateur 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.
Observateur (modèle Observer) : 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 actualisés automatiquement.
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.
Simple Factory (mode usine simple) : Renvoie des instances de différentes classes selon différents paramètres.
Sigleton (mode singleton) : Garantit qu'une classe n'a qu'une seule instance et fournit un point d'accès global pour y accéder.
State (Mode State) : Permet à un objet de changer de comportement lorsque son état interne change. L'objet donne l'impression que la classe à laquelle il appartient a été modifiée.
Stratégie (Mode Stratégie) : Définissez une série d'algorithmes, encapsulez-les un par un et rendez-les interchangeables. Ce mode permet à l'algorithme de changer indépendamment de l'utilisateur qui l'utilise.
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 des étapes spécifiques d’un algorithme sans modifier la structure de l’algorithme.
Visiteur (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.
En raison de UML sera utilisé pour expliquer la structure du modèle en détail plus tard, mais voici un diagramme simple.
Si vous souhaitez en savoir plus sur les connaissances connexes, veuillez faire attention au Site Web PHP chinois pour plus de nouvelles !
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!