Java Reference
In-Depth Information
Bild 1-3 zeigt, dass die zwei Verantwortlichkeiten auf jeweils eine Klasse mit jeweils ei-
ner einzigen Verantwortlichkeit aufgeteilt werden können:
«interface»
IVerbindung
«interface»
IUebertragung
+ connect() : void
+ disconnect() : void
+ receive() : void
+ send() : void
Verbindung
Uebertragung
+ connect() : void
+ disconnect() : void
+ receive() : void
+ send() : void
Bild 1-3 Anwendung mit getrennten Verantwortlichkeiten
Die verschiedenen Verantwortlichkeiten können nun über getrennte Interfaces und Im-
plementierungen verwendet werden. Wird zum Beispiel das Interface IVerbindung
zum Senden von Daten verändert, ist nur die dieses Interface implementierende Klas-
se Verbindung betroffen. Der Entwickler kann sich sicher sein, dass ein dort auf-
tretender Fehler auch nur hier zu suchen ist. Die Klasse Uebertragung ist von dieser
Änderung in keiner Weise betroffen. Es können somit auch keine Fehler durch eine
Änderung des Interface IUebertragung in der Klasse Verbindung entstehen.
1.4 Interface Segregation-Prinzip
Das Interface Segregation-Prinzip (ISP) verlangt, dass große Interfaces in kleinere
Interfaces aufgeteilt werden, so dass die kleineren Interfaces den Anforderungen der
verschiedenen Clients genügen. Die Clients erhalten also nur Interfaces, die sie auch
nutzen. Damit hängen sie nicht von nicht benötigten Schnittstellen ab. Dieses Prinzip
stammt von Robert C. Martin [marisp] (siehe auch [Mar03]). Es lautet:
"Clients should not be forced to depend upon interfaces that they do not use."
Clients sollten nicht dazu gezwungen werden, von Interfaces ab-
zuhängen, die sie gar nicht brauchen. Damit schlagen Ände-
rungen an nicht benötigten Schnittstellen nicht auf die Client-Pro-
gramme durch.
Die Anwendung dieses Prinzips erfordert die Analyse jeder einzelnen Methode in ei-
nem Interface. Es ist hierbei zu prüfen, ob eine betrachtete Methode von jedem Client
der Klasse benötigt wird. Ist dies nicht der Fall, muss überlegt werden, welche Metho-
den in welcher Kombination von einem Client oder einer Gruppe von Clients benötigt
Search WWH ::




Custom Search