DIP

Xaero
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 173
Registriert: 8. Feb 2006 20:06

DIP

Beitrag von Xaero »

Habe eine Frage zu diesem Design-Prinziep:
Auf der Folie 14 Vorlesung 10(Beispiel mit der Lampe) wurde eineLösung vorgeschlagen. Meine Frage ist jetzt:
High-Level Module sollen nicht von Low-Level Modulen abhängen und umgekehrt. Beide sollen von Abstraktion abhäbgen (DIP)!
Müsste es nicht so aussehen:
Se.jpg
Se.jpg (10.91 KiB) 604 mal betrachtet
Dann wären beide von einander Unabhängig und von Abstraktion abhängen?

Benutzeravatar
mantra
Computerversteher
Computerversteher
Beiträge: 385
Registriert: 23. Okt 2005 23:56
Wohnort: Wiesbaden

Re: DIP

Beitrag von mantra »

Hi.
Ich glaube nicht, dass das DIP "und umgekehrt" sagt, sonst würde es ja "Dependency Removal Principal" oder so ähnlich heißen müssen. Man kehrt die Abhängigkeit um und hebt sie nicht auf. Während also bisher "Button" von einer konkreten "Lamp" abhängig war, ist jetzt "Lamp" vom "ButtonServer"-Interface abhängig (denn Button "besitzt" das Interface). "Lamp" ist aber auch so wie es auf den Folien ist schon unabhängig von einem konkreten "Button".

Xaero
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 173
Registriert: 8. Feb 2006 20:06

Re: DIP

Beitrag von Xaero »

Und was soll das Bild dann sagen...Lösung von Übung 8 (Slides ex 11) Folie 8
Dateianhänge
Unbenannt.JPG
Unbenannt.JPG (16.78 KiB) 571 mal betrachtet

marcel_b
Nerd
Nerd
Beiträge: 600
Registriert: 31. Okt 2006 17:04
Kontaktdaten:

Re: DIP

Beitrag von marcel_b »

Hi, nur im Kontext, das beide Module austauschbar (oder sich evtl. in Zukunft verändern werden) sein sollen (Erinnerung: auch Low-Level Module können wiederverwendet werden, wenn eine vernünftige Abstraktion gewählt wurde) Siehe Diskussion im Thread

"Der Begriff "Abstraktion" bzw. "Abstrakte Klasse"" was eine Abstraktion hier meint...

Benutzeravatar
skywalker
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 1. Jun 2004 07:21
Wohnort: Bischofsheim
Kontaktdaten:

Re: DIP

Beitrag von skywalker »

Ich bin jetzt auch etwas verwirrt ob die Lamp jetzt ein ButtonClient oder ein ButtonServer ist. Eigentlich hast du denke ich recht, es ist ein Client denn es wird ja von Button benutzt (also ein- und ausgeschaltet). Auf den Folien ist es allerdings ein ButtonServer...

Am sinnvollsten wäre es das Interface "Switchable" zu nennen denke ich :wink:

Aber was stimmt nun?

lg

marcel_b
Nerd
Nerd
Beiträge: 600
Registriert: 31. Okt 2006 17:04
Kontaktdaten:

Re: DIP

Beitrag von marcel_b »

Hi,

okay, das war etwas zu kurz ausgeführt. Nimm an, dass dein High-Level-Modul (HLM) sich nie mehr ändern wird. Dann brauchst du keine Abstraktion in Form eines Interfaces einführen. Das HLM ist stabil genug.

Gehst du davon aus, dass das HLM sich demnächst mal ändern wird, willst du eigentlich das Low-Level-Modul (LLM) auch nicht ständig ändern müssen. Dann definierst du ein Interface aus Client Sicht, dass dann von einem beliebigen HLM implementiert werden kann. Das LLM ist dann/damit auch gegenüber Änderungen im HLM abgeschlossen.

Das Beispiel ist für Java etwas weniger brenzlig als für Sprachen wie C++ wo alle Klassen neu kompiliert werden müssen. In Java haben wir mit der Bytecode Kompaibilität das Problem nur sehr begrenzt (also nur wenn die Methodensignatur sich tatsächlich ändert) Erinnert ihr euch an die Vorlesung zu Visitor und Dependencies etc.?

Antworten

Zurück zu „Archiv“