ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
396
396
EMPFEHLEN
-
17.02.09 13:21 #1
- Registriert seit
- Feb 2005
- Ort
- 127.0.0.1
- Beiträge
- 189
Hallo,
einfach mal eine Grundsatzfrage an die großen Meister, die mir hier schon so oft super geholfen haben
Aber natürlich darf sich jeder angesprochen fühlen etwas dazu zu sagen ...
Mich würde interessieren, wie ihr Methoden findet, die das Objekt, also this zurückgeben?
einfaches Beispiel:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
public class GibZurueck { private boolean gesetzt = false; public GibZurueck() { } public GibZurueck setGesetztNeu(boolean neuerWert) { this.gesetzt = neuerWert; return this; } public boolean getGesetzt() { return this.gesetzt; } public static void main(String[] args) { GibZurueck gz = new GibZurueck(); System.out.println( "Wert = " + gz.setGesetztNeu(true).getGesetzt() ); } }
Oder muss man noch spezielles beachten, dass auch wirklich das Objekt zurückgegeben wird?
Haut mir aber ruhig auf die Finger, wenn ich da böses gemacht habe!
Danke euch!
Gruß
Gerrit
-
17.02.09 13:26 #2
In diesem Fall halte ich eine getter-Methode für sinnlos, da die Variable/das Objekt sowieso in der gleichen Klasse ist und somit immer Zugriff besteht.
Solche getter- und setter-Methoden sind dafür gedacht, dass du anderen Klassen eine Schnittstelle auf die Variable/das Objekt bietest. So kannst du z.b. verhindern, dass eine fremde Klasse einen ungültigen Wert in das Objekt schreibt."... Jeder von uns ist Kunst... gezeichnet vom Leben" (Casper)
"Sir?, we're sorrounded!"
"Excellent, we can attack in any direction"
-
17.02.09 13:54 #3
- Registriert seit
- Feb 2005
- Ort
- 127.0.0.1
- Beiträge
- 189
-
17.02.09 14:01 #4
Diese Methodik ist durchaus üblich und nennt sich Fluent Interface. Vorrangig findet man das bei Implementierungen des ValueObject Pattern (d.h. für Typen die immutable sind). Hier wird dann aber oft nicht this zurückgegeben sondern eine neue Instanz der Klasse. Die Methoden heißen dann auch eher withFooBar() um den konfigurativen Aspekt besser zu verdeutlichen.
Für Setter kann man das machen um z.B. die Konfigurationsmöglichkeit der Klasse zu verdeutlichen.
Den Punkt mit dem sinnlosen Getter kann ich so nicht zustimmen. Oft benutzt ein Client das Objekt durch ein Interface, dass nur den Getter enthält. Die Settermethode ruft dann im Idealfall eine Factory, die die Instanz "konfiguriert" und nur über das Interface zurückgibt. So erlaubt man die Konfiguration an einer zentralen Stelle und verhindert das nachträgliche Umkonfigurieren. Sehr beliebte Methodik im bereich Serverprogrammierung / Spring usw.
Gruß
OllieIn theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
-
17.02.09 14:04 #5
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Das Methoden this zurückgeben ist durchaus sinnvoll.
Siehe Fluent Interface
Gruß
\edit: Ups, zu spät. Der Beitrag war doch eben aber noch nicht da...
?
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
17.02.09 14:21 #6
- Registriert seit
- Feb 2005
- Ort
- 127.0.0.1
- Beiträge
- 189
Spricht denn etwas dagegen nicht eine neue Instanz zurückzugeben, sondern die aktuelle Instanz? Weil ansonsten müsste ich in die Instanz wieder alle anderen noch vorhandenen Variablen rüberschaufeln, die da noch so rumfleuchen
Das brauch ich so nicht.
Vielen Dank für eure Antworten!
Gruß
Gerrit
-
17.02.09 14:24 #7
Nope. Dadurch, dass du die Methode weiter setFooBar() heißt wird deutlich, dass sie manipulativen Charakter hat. D.h. das ist durchaus okay.
@deepthroat - den Link hatte ich gesucht
REINHAUN!In theory, there is no difference between theory and practice. In practice, there is!
www.olivergierke.de
Ähnliche Themen
-
Klasse aus Methode aufrufen
Von Morpheyz im Forum Java GrundlagenAntworten: 6Letzter Beitrag: 04.05.09, 13:00 -
settimeout in eigener klasse auf eine Methode der Klasse
Von user2580 im Forum Javascript & AjaxAntworten: 2Letzter Beitrag: 12.04.09, 16:26 -
Klasse extenden, Methode extenden/andere Methode vorschalten?
Von lay-z-cow im Forum PHPAntworten: 7Letzter Beitrag: 11.12.07, 15:33 -
Per void Methode auf Objekt einer Klasse zugreifen
Von mkoeni1 im Forum JavaAntworten: 8Letzter Beitrag: 12.04.06, 12:20 -
Klasse nutzt Methode einer anderen Klasse
Von sasfed im Forum PHPAntworten: 2Letzter Beitrag: 06.02.06, 19:57





Zitieren
Login





