Maison  >  Article  >  développement back-end  >  Que signifie le principe d'ouverture-fermeture ?

Que signifie le principe d'ouverture-fermeture ?

藏色散人
藏色散人avant
2019-04-15 10:29:067679parcourir

Principe ouvert-fermé

Le principe ouvert-fermé (OCP) est la pierre angulaire de la « conception réutilisable » dans la conception orientée objet et l'un des principes les plus importants de la conception orientée objet. conception De nombreux autres principes de conception sont un moyen de réaliser le principe ouvert-fermé.

En 1988, Bertrand Meyer a proposé le principe d'ouverture et de fermeture dans son livre « Construction logicielle orientée objet ». Son texte original est le suivant : « Les entités logicielles doivent être ouvertes pour extension, mais fermées pour modification ». Traduit : "Les entités logicielles doivent être ouvertes à l'extension et fermées à la modification." Cette phrase est un peu professionnelle, parlons-en de manière plus informelle, c'est-à-dire : les différents composants inclus dans le système logiciel, tels que les modules (Modules), les classes (Classes), les fonctions (Functions), etc., doivent être Modifier code existant et introduire de nouvelles fonctionnalités. Le « ouvert » dans le principe ouvert-fermé signifie que l'expansion des fonctions du composant est ouverte et que l'expansion fonctionnelle est autorisée ; le « fermé » dans le principe ouvert-fermé signifie que la modification du code d'origine est fermée, c'est-à-dire ; , il ne peut pas. Le code original doit être modifié.

Les modules conçus selon le principe d'ouverture et de fermeture présentent deux caractéristiques principales :

(1) Ouvert pour extension. Cela signifie que le comportement du module est extensible. Lorsque les besoins de l'application changent, nous pouvons étendre le module pour avoir de nouveaux comportements qui répondent à ces changements. Autrement dit, nous pouvons modifier la fonctionnalité du module.

(2) Fermé pour modification. Lors de l'extension du comportement d'un module, vous n'avez pas besoin de modifier le code source ou le code binaire du module. La version binaire exécutable du module, qu'il s'agisse d'une bibliothèque pouvant être liée, d'un fichier DLL ou .EXE, n'a pas besoin d'être modifiée.

Méthode de mise en œuvre

La clé pour réaliser le principe d'ouverture et de fermeture réside dans "l'abstraction". Résumez tous les comportements possibles du système dans une couche inférieure abstraite, qui spécifie les caractéristiques de toutes les méthodes qui doivent être fournies par des implémentations spécifiques. En tant que couche d'abstraction de la conception du système, il est nécessaire de prévoir toutes les extensions possibles, de sorte que dans tout cas d'expansion, la couche inférieure abstraite du système n'ait pas besoin d'être modifiée en même temps, car une ou plusieurs nouvelles implémentations concrètes ; peut être dérivé de la couche inférieure abstraite, le comportement du système peut être modifié, de sorte que la conception du système est ouverte à l'extension.

Nous avons toujours préconisé une orientation vers la demande dans le processus de développement de logiciels. Cela nécessite d'avoir une compréhension très claire des besoins des utilisateurs lors de la conception, de juger des évolutions possibles contenues dans les besoins, et ainsi de clarifier dans quelles circonstances le principe d'ouverture et de fermeture doit être utilisé.

Concernant la partie variable du système, il existe également un principe d'encapsulation de variation (EVP) plus spécifique, qui explique plus en détail le principe d'ouverture et de fermeture du point de vue de la mise en œuvre du génie logiciel. EVP exige que lors de la conception d'un système, toutes les parties du système susceptibles de changer soient évaluées et classées, et que chaque facteur variable soit encapsulé individuellement.

Dans la phase de conception initiale du processus de développement réel, nous devons lister tous les comportements possibles du système et ajouter ces comportements à la couche inférieure abstraite. C'est tout simplement impossible et peu rentable de le faire. Par conséquent, nous devons accepter les modifications de manière réaliste et adopter les changements, afin que notre code puisse être ouvert aux extensions et fermé aux modifications.

Avantages

Si un système logiciel est conforme au principe d'ouverture-fermeture, alors du point de vue de l'ingénierie logicielle, il présente au moins les avantages suivants :

Bonne réutilisabilité.

Une fois le logiciel terminé, nous pouvons toujours étendre le logiciel et ajouter de nouvelles fonctions, ce qui est très flexible. Par conséquent, ce système logiciel peut répondre à des besoins changeants en ajoutant continuellement de nouveaux composants.

Bonne maintenabilité.

Étant donné que les composants du système logiciel existant, en particulier sa couche inférieure abstraite, ne seront pas modifiés, nous n'avons pas à nous soucier de la stabilité des composants d'origine du système logiciel, ce qui rend le changement de logiciel Le système a une certaine stabilité et continuité.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer