Offenes geschlossenes Prinzip ist das grundlegendste Designprinzip in der Java -Welt. Es führt uns, wie man ein stabiles und flexibles System baut.
Definition:
Eine Softwareentität wie Klassen, Module und Funktionen sollte offen für Erweiterungen sein und für Modifikationen geschlossen sein.
Softwareentitäten wie Klassen, Module und Funktionen sollten für die Erweiterung geöffnet sein, aber für Änderungen geschlossen werden.
Die Bedeutung des Eröffnungs- und Schlussprinzips ist, dass eine Softwareentität Änderungen durch Erweiterungen erzielen sollte, anstatt durch den vorhandenen Code zu ändern.
Die Softwareentität enthält die folgenden Teile:
Das Prinzip des Öffnens und Schließens ist ein Prinzip für die Einschränkungen des aktuellen Entwicklungsdesigns, das für zukünftige Dinge der Softwareentität formuliert wurde.
Hinweis: Das Prinzip des Öffnens und Schließens ist offen für Erweiterungen und schließende Änderungen bedeutet nicht, dass keine Änderungen vorgenommen werden. Änderungen an Modulen auf niedrigem Niveau müssen mit hochrangigen Modulen gekoppelt sein, andernfalls handelt es sich um ein isoliertes und bedeutungsloses Code-Snippet.
Arten von Veränderungen:
Der Grundweg eines Projekts sollte wie folgt sein: Projektentwicklung, Wiederaufbau, Tests, Produktion, Betrieb und Wartung. Die Rekonstruktion kann das ursprüngliche Design und den ursprünglichen Code ändern, und der Betrieb und die Wartung können die Änderung des ursprünglichen Code minimieren, die Reinheit des historischen Codes beibehalten und die Stabilität des Systems verbessern.
Bedeutung des Prinzips des Öffnens und Schließens:
1. Die Auswirkungen des Eröffnungs- und Schließungsprinzips auf Tests. Das Eröffnungs- und Schlussprinzip besteht darin, den ursprünglichen Testcode immer noch normal zu halten. Wir müssen den erweiterten Code nur testen.
2. Das Prinzip des Öffnens und Schließens kann die Wiederverwendbarkeit verbessern. Im objektorientierten Design besteht alle Logik aus Atomlogik, anstatt eine Geschäftslogik in einer Klasse unabhängig zu implementieren. Nur auf diese Weise kann der Code wiederverwendet werden. Je kleiner die Granularität ist, desto größer ist die Möglichkeit, wiederverwendet zu werden.
3. Das Eröffnungs- und Schlussprinzip kann die Anforderungen der objektorientierten Entwicklung von Wartbarkeit verbessern.
So verwenden Sie das Eröffnungs- und Schließprinzip:
1. Abstrakte Einschränkungen Zunächst erweitern Sie die Erweiterung durch Schnittstelle oder abstrakte Klassenbeschränkungen und erlauben keine öffentlichen Methoden, die nicht in der Schnittstelle oder in der abstrakten Klasse existieren.
Versuchen Sie zweitens, Schnittstellen oder abstrakte Klassen für Parametertypen und Referenzobjekte und nicht für Implementierungsklassen zu verwenden.
Drittens versuchen Sie, so weit wie möglich stabil zu bleiben, und sobald ermittelt, sind Änderungen nicht zulässig.
2. Metadaten -Kontrollmodulverhalten Metadaten sind die Daten, mit denen die Umgebung und die Daten beschrieben werden. In Laiengründen sind es Konfigurationsparameter. Parameter können aus Dateien oder Datenbanken erhalten werden.
Federbehälter sind ein typisches Beispiel für das Verhalten von Metadatenkontrollmodulen, und das ultimative Umkehrung der Kontrolle ist
3. Formulierung einer Projektcharta. In einem Team ist es sehr wichtig, eine Projektcharter einzurichten, da die Charta Vereinbarungen angibt, an die sich alle Mitarbeiter einhalten müssen. Für Projekte sind Vereinbarungen besser als die Konfiguration.
4. Die Verpackungsänderungen haben zwei Bedeutungen:
In die gleichen Änderungen in eine Schnittstelle oder eine abstrakte Klasse einschließen.
Zweitens können Sie verschiedene Änderungen in verschiedene Schnittstellen oder abstrakte Klassen einkapseln, und es sollten keine zwei unterschiedlichen Änderungen in derselben Schnittstelle oder abstrakte Klasse geben.
Beispiel
Hier ist ein Beispiel, zuallererst ein schlechtes Beispiel:
Klasse Graphiceditor {public void drawshape (form s) {if (s.m_type == 1) DrawRectangle (s); else if (s.m_type == 2) DrawCircle (s); } public void drawcircle (Kreis r) {....} public void DrawRectangle (Rechteck r) {....}} Klasse Form {int m_type; } Klasse Rechteck erweitert die Form {rectangle () {Super.m_type = 1; }} Klasse Circle erweitert die Form {circle () {Super.m_type = 2; }}Wenn wir eine Form erweitern möchten, müssen wir zuerst die Grafikmesser -Klasse verstehen, dann einen neuen Typ in Drawshape hinzufügen und dann eine Funktion hinzufügen. Hier ist der verbesserte Code:
Klasse Graphiceditor {public void drawshape (form s) {s.draw (); }} Klasse Form {Abstract void draw (); } Klasse Rechteck erweitert die Form {public void draw () {// Zeichnen Sie das Rechteck}}
Die Zeichnungslogik ist nicht erforderlich, die spezifische Implementierung in eine Unterklasse einzulegen.
Zusammenfassen:
Ein Einhalten der Öffnungs- und Schlussprinzipien kann die Skalierbarkeit und Wartung von Software verbessern.
2. In den meisten Designmustern und Designprinzipien geht es darum, das Eröffnungs- und Schließungsprinzip zu realisieren.