Hi,
kann mir jemand bitte versuchen, diese beiden Patterns zu erklären und vielleicht ein real-world Beispiel dazu zu geben, wo diese Patterns angewendet werden? - Ich habe schon auf verschiedensten Seiten mir die Klassendiagramme dazu zu Gemüte geführt, aber mir ist das einfach nicht ganz klar...
1) Adapter:
Ich habe eine abstrakte Klasse oder ein Interface namens A, das bestimmte Methoden anbietet. Dieses Interface oder abstrakte Klasse kann von verschiedenen konkreten Klassen implementiert werden – das heißt die Methoden vom Interface oder abstrakten Klassen werden in der konkreten Klasse implementiert. Jetzt habe ich eine andere konkrete Klasse C von der ich die Funktionalität verwenden möchte, jedoch implementiert diese konkrete Klasse C das Interface od. abstrakte Klasse A nicht. Daher definiere ich eine konkrete Klasse B, die das Interface oder die abstrakte Klasse A implementiert. In dieser Klasse B wird ein Objekt der Klasse C erzeugt. Und dann wird in der entsprechenden Methode von der konkreten Klasse B mit dem Objekt der Klasse C die korrespondierende Methode der Klasse C aufgerufen.
=>Das heißt in meiner Main-Klasse definiere ich noch immer Objekte von dem Interface A das dann ein Objekt von der konkreten Klasse B erzeugt in der dann irgendwann mal Methoden der adaptierten Klasse C aufgerufen wird.
Die Frage ist nun, wenn ich das richtig interpretiert habe, dass ich immer Objekte vom Interface A erzeuge und nicht einfach die Methoden der Klasse C aufrufe?
lg
patrick
kann mir jemand bitte versuchen, diese beiden Patterns zu erklären und vielleicht ein real-world Beispiel dazu zu geben, wo diese Patterns angewendet werden? - Ich habe schon auf verschiedensten Seiten mir die Klassendiagramme dazu zu Gemüte geführt, aber mir ist das einfach nicht ganz klar...
1) Adapter:
Ich habe eine abstrakte Klasse oder ein Interface namens A, das bestimmte Methoden anbietet. Dieses Interface oder abstrakte Klasse kann von verschiedenen konkreten Klassen implementiert werden – das heißt die Methoden vom Interface oder abstrakten Klassen werden in der konkreten Klasse implementiert. Jetzt habe ich eine andere konkrete Klasse C von der ich die Funktionalität verwenden möchte, jedoch implementiert diese konkrete Klasse C das Interface od. abstrakte Klasse A nicht. Daher definiere ich eine konkrete Klasse B, die das Interface oder die abstrakte Klasse A implementiert. In dieser Klasse B wird ein Objekt der Klasse C erzeugt. Und dann wird in der entsprechenden Methode von der konkreten Klasse B mit dem Objekt der Klasse C die korrespondierende Methode der Klasse C aufgerufen.
=>Das heißt in meiner Main-Klasse definiere ich noch immer Objekte von dem Interface A das dann ein Objekt von der konkreten Klasse B erzeugt in der dann irgendwann mal Methoden der adaptierten Klasse C aufgerufen wird.
Die Frage ist nun, wenn ich das richtig interpretiert habe, dass ich immer Objekte vom Interface A erzeuge und nicht einfach die Methoden der Klasse C aufrufe?
lg
patrick