Entkoppeln Sie Ihren Code von einer bestimmten Implementierung der Schnittstelle.
Dies hilft Ihnen auch, in Zukunft zu einer anderen Implementierung der Schnittstelle List
zu wechseln.
Zum Beispiel -
Sie haben später List<String> names = new ArrayList<String>();
. Sie haben entschieden, dass Sie eine andere Implementierung der List
-Schnittstelle verwendet haben sollen, sagen wir LinkedList
, damit Sie sie einfach in List<String> names = new LinkedList<String>();
ändern und nichts bricht.
Ein solcher Code verwendet nicht die Klasse List
, er deklariert die Variable vom Typ List
. Dies wird Abstraktion
List
ist eine Schnittstelle , die definiert, welche Methoden die tatsächliche Klasse hat, ohne anzugeben, welche tatsächliche Klasse verwendet wird.
Obwohl dies hier keine große Rolle spielt, kann diese Praxis sehr wichtig sein, sogar in komplexeren Situationen. Es ist eine gute Übung, immer diesem Muster zu folgen.
Damit schreiben Sie Code gegen die Schnittstelle List
, was es leicht macht, die Implementierung in Zukunft zu wechseln, wenn Sie müssen.
In diesem Fall genügt folgendes:
%Vor%Wenn Sie jetzt etwas wie folgt machen -
%Vor% Sie werden gegen die Implementierung ArrayList
selbst codieren. Und Ihr Code ist an diese spezifische Implementierung gebunden. Falls Sie die Implementierung wechseln müssen, werden viele Code-Änderungen benötigt.
Überprüfen Sie die Dokumentation , um einige der bereitgestellten Standardimplementierungen zu ermitteln von Java 6.
Programmieren zu einer Schnittstelle, keine Implementierung
Es ist ein Designmuster von Gang of Four (GoF). Warum das?
Sie führen durch einen abstrakten Vertrag anstelle einer konkreten Implementierung.
%Vor% Was ist mit statt ArrayList
Implementierung möchten Sie LinkedList
Implementierung?
Auf diese Weise müssen Sie nur diese Eigenschaft mit dem Setter injizieren.
Abstraktion ist der Schlüssel, Sie wissen nichts über die Implementierung nur nach Spezifikation.
Lesen Sie diese Was bedeutet es, an eine Schnittstelle zu programmieren?
Tags und Links java