# Methoden delegieren oder Getter benutzen?



## Redfrettchen (26. Jul 2006)

Hi,
ein Objekt habe eine Membervariable. Nun möchte ein andere Objekt von außen darauf zugreifen, es möchte die Methoden des als Member gehaltenen Objekts benutzen.
Welche der beiden Methoden ist nun "besser"?:
1. Man stellt in der Klasse einen Getter für das Member bereit.
2. Man implementiert die Methoden, die von außen erreichbar sein sollen, versperrt damit aber den direkten Zugriff auf das Memberobjekt.

Für 1. würde sprechen, dass man nicht so viele delegierende Methoden implementieren müsste. Dagegen spricht, dass man von außen dann auch weitere public-Methoden des Memberobjekts zugreifen kann, was vielleicht [edit] nicht erwünscht ist[/edit].

Dankö für jede Antwort!


----------



## foobar (26. Jul 2006)

> Für 1. würde sprechen, dass man nicht so viele delegierende Methoden implementieren müsste. Dagegen spricht, dass man von außen dann auch weitere public-Methoden des Memberobjekts zugreifen kann, was vielleicht gewünscht ist.


Nicht wenn dieser Member auch wieder alles mit Gettern und Settern kapselt. Das ist auch die weitverbreitetste Herangehensweise.


----------



## Redfrettchen (26. Jul 2006)

Irgendwie versteh ich die Antwort nicht ganz (auch wenn ich zugeben muss, dass ich mich etwas falsch ausgedrückt habe, siehe edit). Es geht mir um die Methoden des Members, auf die man von außen nicht zugreifen soll. Vllt ist dieser kleine Schönheitsfehler aber auch hinnehmbar im Vergleich zu dem erhöhten Aufwand mit dem delegieren, ka...


----------



## Illuvatar (26. Jul 2006)

Wenn es wichtig ist, dass die anderen Methoden des Members nicht aufgerufen werden, dann delegieren. Ansonsten getter.


----------



## foobar (26. Jul 2006)

Aber dem Meber ist doch auch wieder ein Objekt mit Gettern und Settern. D.h. hier kannst du auch wieder den zugriff kontrollieren. Es sei denn es ist eine femde Klasse, dann muß man eben überlegen ob es Sinn macht einzelne Methoden zu propagieren oder das ganze Objekt. 
Wenn du als Member z.b. eine Liste mit Objekte hast, kannst du entweder die benötigten Methoden propagieren z.b. get, remove etc. Oder aber du gibst die komplette Liste zurück und der Aufrufer kann damit machen was er will. Welchen Weg man einschlägt muß man ganz individuell entscheiden.


----------



## Redfrettchen (26. Jul 2006)

Ach Mist, ich erstelle Threads mit Fragen, deren Antwort eigentlich total klar sind oder stärkere Differenzierung benötigen. Anyway, danke für die Antworten. In meinem konkreten Problemcode habe ich mich jetzt für den Getter entschieden, weil ich eigentlich sowieso auf die eher kritischen Methode zugreifen muss.


----------

