编程知识 cdmana.com

Expliquer les six principes de base du modèle de conception par des exemples réels

Classification des modèles de conception

  • Mode de création

    Utilisé pour décrire“Comment créer un objet”,Ses principales caractéristiques sont les suivantes:“Séparer la création et l'utilisation d'objets”.GoF(Groupe de quatre)Un seul exemple est fourni dans le livre、Prototypes、Méthode de l'usine、Abstract factory、Constructeur, etc 5 Mode de création de semences.

  • Mode structurel

    Utilisé pour décrire comment une classe ou un objet peut être structuré plus largement dans une certaine disposition,GoF(Groupe de quatre)L'Agence est disponible dans le livre、Adaptateur、Pont、Décoration、Aspect、Xiangyuan、Combinaison, etc. 7 Type de structure.

  • Modèles comportementaux

    Utilisé pour décrire comment les classes ou les objets travaillent ensemble pour accomplir des tâches qu'un seul objet ne peut pas accomplir seul,Et comment répartir les tâches.GoF(Groupe de quatre)La méthode du modèle est fournie dans le livre、Stratégie、Les ordres、Chaîne de responsabilité、Statut、L'observateur、Intermédiaires、Itérateur、Visiteurs、Note de service、Interpréteur, etc 11 Un modèle comportemental.

Principes de conception des logiciels

​ Dans le développement de logiciels,Afin d'améliorer la maintenabilité et la réutilisabilité des systèmes logiciels,Augmenter l'extensibilité et la flexibilité du logiciel,Les programmeurs doivent essayer de se baser sur6Principes pour le développement de programmes,Afin d'améliorer l'efficacité du développement de logiciels、Économies sur les coûts de développement et de maintenance de logiciels.

Principe d'ouverture et de fermeture

Ouvert à l'extension,Désactiver les modifications.Lorsque le programme doit être élargi,Impossible de modifier le code original,Pour obtenir un effet d'échange à chaud.En bref,Est de rendre le programme extensible,Facile à entretenir et à mettre à jour.

Pour obtenir cet effet,Besoin d'interfaces et de classes abstraites.Parce que l'abstraction est flexible,Grande adaptabilité,Tant que l'abstrait est raisonnable,Peut essentiellement maintenir la stabilité de l'architecture logicielle.Les détails variables du logiciel peuvent être étendus à partir de classes d'implémentation dérivées de l'abstraction,Lorsque le logiciel doit changer,Il suffit de redessiner une classe d'implémentation en fonction des besoins pour l'étendre.

En prenant comme exemple le thème de la blogosphère, l'application du principe d'ouverture et de fermeture:

Les utilisateurs peuvent changer leur thème de blog en fonction de leurs préférences. Ces thèmes ont des caractéristiques communes , Vous pouvez définir une classe abstraite pour elle (Theme), Et chaque thème spécifique ×××Theme Est sa sous - classe .Les utilisateurs peuvent choisir ou ajouter de nouveaux sujets au besoin, Sans modifier le code original , Il est donc conforme au principe d'ouverture et de fermeture .

Principe de remplacement de Richter

Principe de remplacement de Richter(The Liskov Substitution Principle,LSP)C'est parBarbara Liskov Madame Yu 1988Présenté en,Il est défini comme:“ Si pour un type S Chaque objet de O1Type d'existenceTObjet deO2, Donc pour toutes les définitions TProcéduresPDis,- Oui.O1Remplacer O2EtS- Oui.T Sous - type ,P Le comportement ne change pas ”.

Principe de remplacement de Richter:Où n'importe quelle classe de base peut apparaître,Les sous - classes doivent apparaître.Compréhension populaire: Les sous - classes peuvent étendre la fonctionnalité de la classe mère , Mais ne peut pas changer la fonction originale de la classe mère .En d'autres termes,,Lorsque la Sous - classe hérite de la classe mère, En plus d'ajouter de nouvelles méthodes pour compléter les nouvelles fonctionnalités , Essayez de ne pas outrepasser la méthode de la classe mère .Le principe de substitution de Richter complète le principe d'ouverture et de fermeture, En principe, l'objet de sous - classe est introduit à l'objet parent , On peut aussi dire que les enfants remplacent les parents. ,Et apparaît partout où le parent peut apparaître au lieu de l'objet parent

Si vous complétez une nouvelle fonctionnalité en réécrivant la méthode de la classe mère, C'est simple. ,Mais tout le système d'héritage sera moins réutilisable, Surtout si le polymorphisme est utilisé fréquemment , La probabilité qu'un programme tourne mal est très élevée .

Remplacement de Richter—— Autruche non - oiseau

Voici un autre exemple classique de compréhension du principe de remplacement de Richter“ Autruche non - oiseau ” Pour donner un exemple . En biologie, les oiseaux sont définis comme “ Animaux thermostatiques , Ovulation , Couvert de plumes , Corps fluide , Bec cornu , Les yeux sont de chaque côté de la tête . Membres antérieurs dégénérés en ailes , épiderme squameux des membres postérieurs , Il a quatre orteils. ”. D'un point de vue biologique , L'autruche doit être un oiseau. , C'est une relation héréditaire. .A La demande s'attend à ce que les oiseaux fournissent des comportements liés au vol. , Même si une autruche ressemble à un oiseau normal, 100% Ressemblance ,Mais dansA Dans les limites de la demande ,L'autruche n'est pas d'accord avec d'autres oiseaux ordinaires sur le point de voler, Il n'a pas ce pouvoir. ,Alors..., Les autruches ne peuvent pas dériver des oiseaux , L'autruche n'est pas un oiseau. .B La demande s'attend à ce que les oiseaux adoptent des comportements liés au plumage. ,Alors l'autruche correspond à d'autres oiseaux ordinaires à ce stade. Bien qu'il ne puisse pas voler , Mais ce n'est pas le cas. B Dans les limites de la demande ,Alors..., Il a toutes les caractéristiques comportementales des oiseaux , Les autruches peuvent dériver des oiseaux , L'autruche est un oiseau. .DeAViens voir., La relation héréditaire entre l'autruche et l'oiseau peut ne pas exister. .Alors,Comment juger si l'autruche et l'oiseau héritent ou non? Cela doit être jugé en fonction des besoins des utilisateurs. .

Si la classe mèreA Et sous - classes B La relation entre eux viole le principe de remplacement de Richter ,AlorsAEtB Ce n'est pas une relation d'héritage. . Nous devons repenser notre relation. . Il existe deux options de conception , Sélection au cas par cas :

  • Créer une nouvelle classe abstraite ou interface , La classe de base en tant que deux classes spécifiques . Classe spécifique AEtB Le comportement commun de CMoyenne,Pour résoudreAEtB Problèmes de comportement incohérent .

  • Oui.BÀA Remplacer la relation successorale par la relation déléguée . Combinaison de référence spécifique /Principes du multiplexage par agrégation.

Principe de l'inversion de dépendance

Programmation pour les interfaces,S'appuyer sur l'abstraction plutôt que sur le concret. En termes simples, il faut programmer l'abstraction , Ne pas programmer la mise en œuvre ,Cela réduit le couplage entre le client et le module de mise en œuvre.

Inversion dépendante——Assembler l'ordinateur

Un ordinateur doit être assemblé. , Accessoires nécessaires cpu,Disque dur,Module mémoire. Il n'y a que ces configurations , L'ordinateur fonctionne correctement .SélectionnercpuIl y a beaucoup d'options,Par exemple:Intel,AMDAttendez., Le disque dur peut être sélectionné par Seagate , Nombre occidental, etc. , Le module mémoire peut choisir Kingston , Bateau pirate, etc. . Si l'ordinateur assemblé cpuÇa ne peut être que ça.IntelDe, Le module mémoire ne peut être que celui de Kingston. , Le disque dur ne peut être que Seagate , Ce n'est certainement pas convivial pour les utilisateurs ,L'utilisateur avec le châssis doit vouloir suivre ses préférences, Choisissez vos accessoires préférés .

Amélioration selon le principe de l'inversion de dépendance :Il suffit de modifierComputerCatégorie,JeanComputer Abstraction dépendante de la classe ( Interface pour chaque accessoire ), Plutôt que de dépendre des classes d'implémentation spécifiques à chaque composant .

Principe d'isolement des interfaces

Utiliser plusieurs interfaces isolées, Au lieu d'une seule interface ;La dépendance d'une classe par rapport à une autre doit être basée sur une interface minimale.

Voici un exemple pour comprendre le principe d'isolement de l'interface

Isolement de l'interface——Climatisation

La climatisation générale a la fonction de réfrigération et de chauffage , Certains climatiseurs à simple refroidissement n'ont qu'une fonction de réfrigération , S'il n'y a qu'un seul connecteur pour le chauffage par réfrigération , Viole le principe d'isolement de l'interface . À ce stade, les deux interfaces de réfrigération et de chauffage doivent être abstraites. , Plutôt que d'abstraiter l'interface de refroidissement et de chauffage .

La loi de Dimitri

Le principe du minimum de connaissance signifie:Une entité devrait avoir le moins d'interactions possible avec d'autres entités,Rendre les modules fonctionnels du système relativement indépendants.

Parlez seulement à vos amis directs ,Non.“Étrangers”Parler(Talk only to your immediate friends and not to strangers).

Cela signifie que: Si les deux entités n'ont pas besoin de communiquer directement ,Il ne devrait donc pas y avoir d'appels directs mutuels,L'appel peut être transmis par un tiers.L'objectif est de réduire le degré de couplage entre les classes,Amélioration de l'indépendance relative des modules.

De la loi de Dimitri “Amis”Oui.: L'objet courant lui - même 、 Objet membre de l'objet courant 、 Objet créé par l'objet courant 、 Paramètres de la méthode de l'objet courant, etc. , Ces objets sont associés à l'objet courant 、 Relations agrégées ou combinées , Comment accéder directement à ces objets .

La loi de Dimitri—— Relations entre acteurs et agents

Les acteurs sont occupés à cause de l'activité , Donc beaucoup de choses quotidiennes sont gérées par un courtier , Si vous rencontrez des fans , Calendrier . L'agent ici est un ami de star. , Les fans et les médias sont des étrangers. , Donc C'est la règle de Dimitri. .

Principe du multiplexage synthétique

Le principe du multiplexage synthétique signifie:Essayez d'utiliser d'abord des associations telles que la combinaison ou l'agrégation pour atteindre,Deuxièmement, envisager d'utiliser les relations d'héritage pour réaliser.

En général, le multiplexage des classes est divisé en deux types: le multiplexage héréditaire et le multiplexage synthétique.

Le multiplexage héréditaire présente les avantages d'être simple et facile à réaliser, Mais il présente également les inconvénients suivants: :

  1. Le multiplexage hérité détruit l'encapsulation de la classe.Parce que l'héritage expose les détails d'implémentation de la classe mère à la classe Enfant,Les parents sont transparents pour les enfants,Donc ce multiplexage est aussi appelé“Boîte blanche”Multiplexage.
  2. Couplage élevé entre la Sous - classe et la classe mère .Tout changement dans l'implémentation d'une classe mère entraîne un changement dans l'implémentation d'une sous - classe, Cela n'est pas propice à l'expansion et à la maintenance des classes .
  3. Il limite la flexibilité du multiplexage . Les implémentations héritées des parents sont statiques , Défini au moment de la compilation , Donc il n'y a pas de changement possible au moment de l'exécution .

Lorsqu'il est combiné ou polymérisé , Vous pouvez inclure des objets existants dans de nouveaux objets ,Faire partie d'un nouvel objet, Un nouvel objet peut invoquer la fonctionnalité d'un objet existant , Il présente les avantages suivants: :

  1. Il maintient l'encapsulation de la classe.Parce que les détails intérieurs de l'objet composant sont invisibles pour le nouvel objet,Donc ce multiplexage est aussi appelé“Boîte noire”Multiplexage.

  2. Faible couplage entre les objets . L'abstraction peut être déclarée à l'emplacement d'un membre d'une classe .

  3. Grande flexibilité de réutilisation.Ce multiplexage peut être effectué dynamiquement au moment de l'exécution,Les nouveaux objets peuvent faire référence dynamiquement aux mêmes objets que le type d'objet composant.

    Principe du multiplexage synthétique—— Raquette de tennis

Les raquettes de tennis sont en aluminium et en carbone , Et il y a beaucoup de couleurs ,Si vous définissez à la fois la couleur et la structure dans une raquette de tennis de classe abstraite, Une raquette de tennis en aluminium rouge est dérivée , Raquette de tennis en aluminium bleu , Raquette de tennis en carbone rouge , Raquette de tennis en carbone bleu, etc. ,Nous pouvons voir que l'utilisation du multiplexage hérité a donné lieu à de nombreuses sous - classes,S'il y a une nouvelle structure ou une nouvelle couleur, Vous devez définir une nouvelle classe .Nous essayons de changer le multiplexage hérité en multiplexage agrégé pour voir. Vous ne pouvez conserver les propriétés structurelles que dans les classes abstraites , Nouvelle interface de couleur , Permettre à l'auto - classe d'implémenter différentes interfaces de couleur .

版权声明
本文为[Aix ueforever]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/09/20210914172701741b.html

Scroll to Top