Frage

Wie funktioniert Informationen Hilfe Ausblenden der Module zu entkoppeln, die ein System umfassen?

War es hilfreich?

Lösung

Encapsulation (Information Hiding) ermöglicht es Ihnen, nur das absolute Minimum für die Außenwelt aus. Dies bedeutet, dass Sie die nicht belichteten Bits zum Inhalt ändern können Ihr Herz ohne Kunden zu beeinflussen.

Ein typischer Fall. Sagen Sie bitte eine Datenstruktur implementiert haben, die Strings in einem Array hält. Wenn Sie das Array aussetzen, Benutzer Ihrer Datenstruktur nur str[7] verwenden können, um die Zeichenfolge an Position 7 zu erhalten.

Nun, was passiert, wenn Sie Ihre Datenstruktur als einen ausgeglichenen Baum neu zu implementieren entscheiden sucht nach Zeichenkette zu beschleunigen. Sie tun dies, indem Sie die Saiten in einen Baum zu bewegen und das Ändern Ihrer Array, keine Strings zu sein, aber Zeiger auf Stellen innerhalb des Baumes.

Das wird Ihre Kunden brechen, weil sie Strings erwartet werden, keine Zeiger. Jeder einzelne Kunde würde sich ändern, müssen die Zeiger aus dem Array erhalten dann die im Baum suchen.

Wenn Sie jedoch die Umsetzung völlig versteckt hatten und boten nur eine Funktion:

String getStringAt (int n);

Sie würde nur die Datenstruktur ändern und die Funktion bleiben kompatibel.

Die Clients nicht Pause, weil Ihre Application Programming Interface (API) hat sich nicht geändert.

Eine der wichtigsten Regeln, die ich mit den Klassen folgen ist für maximale Kohärenz, minimale Kopplung , um zu zielen. Mit anderen Worten, sollte eine einzige Klasse alles hat, es braucht (nichts mehr) und es sollte so wenig Austausch von Informationen wie möglich mit der Außenwelt hat.

Das bedeutet alle , dass die Kunden anrufen können tun, um die API ist. Keine Aussetzen Nicht-API-Methoden oder ermöglichen ungehinderten Zugang zu öffentlichen Variablen -. Alles soll mit Getter und Setter erfolgen

Andere Tipps

Daten Verstecken, nicht so sehr Module abkoppelt, dass es hilft Grenze der Kupplung zwischen ihnen.
Das ist, weil keine der verborgenen Elemente kann von jedem anderen Modul als das verwendet werden, wenn sie definiert sind, damit die mögliche Tie-In / Abhängigkeit Begrenzung / Call-it-what-you-may welche „Paar“ die Module zusammen.

Mit anderen Worten, schränkt sie den Zwischenmodulaustausch zu dieser, die speziell in der API definiert , und diese Tatsache hilft viel, wenn die Implementierung eines gegebenen Moduls geändert wird, weil so lange wie die API gleich bleibt, funktioniert das Modul Interop. (Keine Notwendigkeit, den Code zu erkunden, wenn irgendwie zu finden, ein Modul, verwendet, um die Variable x von Modul B (wenn B x versteckt, es ist die einzige, es zu benutzen!)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top