Instanzieren von Objekten

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Mir ist aufgefallen, daß häufig eine Basisklasse verwendet wird um Objekte zu instanzieren, z.B. "Container panel = new JPanel()" statt "JPanel panel = new JPanel()". Gibt es da irgendeine Regel, die besagt, man immer die "kleinste" Basisklasse verwenden soll, die die gewünschte Funktionalität abdeckt? Wenn ja, welche Vorteile hat das?

P.S. Ist das etwa auch gemeint, wenn man sagt "Code to an Interface, not to an implementation"? Hab das nämlich schon öfter gehört, kann aber noch nichts damit anfangen, da damit anscheinend nicht nur das Implementieren eines Interfaces gemeint ist.
 
damit ist zum Beispiel gemeint dass du eine eigene Sortieroperation gegen das Interface List schreiben solltest, und nicht gegen eine spezielle Liste (ArrayList, LinkedList, ..)

Code:
public void sort(List list) {

}

FALLS es für die Sortieroperation egal ist welche Liste du nimmst,

hast du 10 Operationen und überall steht ArrayList,
später erkennst du aber dass LinkedList besser wäre/ auch gebraucht wird,
dann müsstest du 10 Parameter ändern oder du benutzt das Interface und nix geht schief


bei
Container panel = new JPanel();
ist das praktisch das gleiche, nur weniger wichtig da man, wenn man das panel ändern möchte, sowieso in dieser Zeile vorbeikommt,

also entweder Änderung
JPanel panel = new JPanel();
in
MyContainer panel = new MyContainer();

oder Änderung
Container panel = new JPanel();
in
Container panel = new MyContainer();

viel spart man da nicht,

evtl. verhindert man noch durch die Verwendung des Interfaces,
dass (ungewollterweise) JPanel-spezisische Operationen verwendet werden,
also ne kleine Sicherheit vor Fehlern.

und schließlich ist es auch recht interessant für die Codelesbarkeit im Rest der betreffenden Operation,
ob hier nun genau ein JPanel benutzt wird oder nur ein Container, das ist ja durchaus ein Unterschied
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben