Le principe fermé ouvert est le principe de conception le plus élémentaire dans le monde Java. Il nous guide comment construire un système stable et flexible.
définition:
Une entité logicielle telle que les classes, les modules et les fonctions doit être ouverte aux extensions et fermée aux modifications.
Des entités logicielles comme les classes, les modules et les fonctions doivent être ouvertes à l'extension mais fermées pour les modifications.
La signification du principe d'ouverture et de clôture est qu'une entité logicielle doit réaliser des changements à travers des extensions, plutôt que en modifiant le code existant.
L'entité logicielle comprend les parties suivantes:
Le principe de l'ouverture et de la fermeture est un principe des contraintes sur la conception actuelle du développement formulées pour les choses futures de l'entité logicielle.
Remarque: Le principe de l'ouverture et de la fermeture est ouvert aux extensions et aux modifications de clôture ne signifie pas qu'aucune modification n'est apportée. Les modifications des modules de bas niveau doivent être couplées à des modules de haut niveau, sinon ce sera un extrait de code isolé et dénué de sens.
Types de changement:
Le chemin de base d'un projet devrait être le suivant: le développement du projet, la reconstruction, les tests, la production, le fonctionnement et la maintenance. La reconstruction peut modifier la conception et le code d'origine, et le fonctionnement et la maintenance peuvent minimiser la modification du code d'origine, maintenir la pureté du code historique et améliorer la stabilité du système.
Importance du principe de l'ouverture et de la fermeture:
1. L'impact du principe d'ouverture et de clôture sur les tests. Le principe d'ouverture et de clôture est de maintenir le code de test d'origine toujours en cours d'exécution normalement. Nous avons seulement besoin de tester le code étendu.
2. Le principe de l'ouverture et de la fermeture peut améliorer la réutilisabilité. Dans la conception orientée objet, toute logique est composée de logique atomique, plutôt que d'implémenter une logique métier indépendamment dans une classe. Ce n'est que de cette manière que le code peut être réutilisé. Plus la granularité est petite, plus la possibilité d'être réutilisée est grande.
3. Le principe d'ouverture et de clôture peut améliorer les exigences du développement orienté objet de maintenabilité.
Comment utiliser le principe d'ouverture et de clôture:
1. Les contraintes abstraites d'abord, étendent l'extension par l'interface ou les contraintes de classe abstraite et ne permettent pas de méthodes publiques qui n'existent pas dans l'interface ou la classe abstraite;
Deuxièmement, essayez d'utiliser des interfaces ou des classes abstraites pour les types de paramètres et les objets de référence, plutôt que les classes d'implémentation;
Troisièmement, essayez de rester stable autant que possible et une fois déterminés, les modifications ne sont pas autorisées.
2. Métadata du module de contrôle des métadonnées Les métadonnées sont les données utilisées pour décrire l'environnement et les données. En termes de laïque, ce sont les paramètres de configuration. Les paramètres peuvent être obtenus à partir de fichiers ou à partir de bases de données.
Les conteneurs à ressort sont un exemple typique du comportement des modules de contrôle des métadonnées, et l'ultime est l'inversion du contrôle
3. Formuler une charte de projet. Dans une équipe, il est très important d'établir une charte de projet car la charte précise les accords que tout le personnel doit respecter. Pour les projets, les accords sont meilleurs que la configuration.
4. Les modifications d'emballage ont deux significations:
Tout d'abord, encapsulez les mêmes changements en une interface ou une classe abstraite;
Deuxièmement, encapsuler différents changements en différentes interfaces ou classes abstraites, et il ne devrait pas y avoir deux changements différents dans la même interface ou la même classe abstraite.
exemple
Voici un exemple, tout d'abord, un mauvais exemple:
classe Graphieditor {public void drawshape (forme s) {if (s.m_type == 1) drawrectangle (s); else if (s.m_type == 2) drawCircle (s); } public void drawCircle (cercle r) {....} public void drawrectangle (rectangle r) {....}} classage de classe {int m_type; } class Rectangle étend la forme {rectangle () {super.m_type = 1; }} classe cercle étend la forme {cercle () {super.m_type = 2; }}Lorsque nous voulons développer une forme, nous devons d'abord comprendre la classe Graphicedorter, puis ajouter un nouveau type de tir, puis ajouter une fonction. Voici le code amélioré:
classe Graphieditor {public void drawshape (forme s) {s.draw (); }} Class Shape {Abstract void Draw (); } classe rectangle étend la forme {public void draw () {// dessiner le rectangle}}
Il n'est pas nécessaire de comprendre la logique de dessin, de mettre l'implémentation spécifique dans une sous-classe.
Résumer:
1. Conforme aux principes d'ouverture et de clôture peut améliorer l'évolutivité et la maintenance des logiciels.
2. La plupart des modèles de conception et des principes de conception consistent à réaliser le principe d'ouverture et de clôture.