Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.java > #13247
| From | Joerg Meier <joergmmeier@arcor.de> |
|---|---|
| Newsgroups | de.comp.lang.java |
| Subject | Re: Strategy-Objekte |
| Date | 2019-05-03 13:37 +0200 |
| Message-ID | <a0jgr3rqix14.hbk5nt6t2bj2.dlg@40tude.net> (permalink) |
| References | <gj12cbF43i4U1@mid.individual.net> |
On Thu, 2 May 2019 22:31:06 +0200, Christian H. Kuhn wrote:
> Ich brauche aber gar kein Objekt, es würde mir reichen, wenn score()
> static wäre. Wenn ich ein Objekt nehme, reicht mir ein Singleton. Und
> überhaupt haben alle diese Strategien keinen Zustand und sind
> automatisch immutable.
Die Strategieen SIND aber der state. Also sie selbst beinhalten zwar keinen
state, aber die Information, welche Strategie genutzt werden soll, muss ja
irgendwo gespeichert sein. Und wie willst Du die Information, welche Klasse
Du nutzen moechtest speichern, wenn nicht als Instanz dieser Klasse ?
Klar, Du koenntest eine Class<? extends ResultToScore> strategy; oder so
speichern, aber das macht es auch nicht viel besser (imo eher noch
schlechter). Aufrufe von statischen Methoden sind in Java eben nicht
dynamisch, und ausser mit Reflection kommst Du da auch nicht drum rum.
Als alternativer Vorschlag, wie Du Dein Problem elegant schreiben
koenntest:
public enum Scoring {
SINGLE(1, 0.5, 0),
TOURNEY(2, 1, 0),
MIXED(3, 1, 0);
private final double win;
private final double draw;
private final double loss;
private Scoring(double win, double draw, double loss) {
this.win = win; this.draw = draw; this.loss = loss;
}
public double score(Chessresult result) {
switch (result) {
case WIN: return win;
case DRAW: return draw;
case LOSS:
default: return loss;
}
}
}
Dann einfach Scoring scoring = SINGLE; double points =
scoring.score(result);
Statelose Objekte, bei denen nur die Objektidentitaet state ist, sind fuer
java-Enums der perfekte use case.
Liebe Gruesse,
Joerg
--
Ich lese meine Emails nicht, replies to Email bleiben also leider
ungelesen.
Back to de.comp.lang.java | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Strategy-Objekte "Christian H. Kuhn" <qno-news@qno.de> - 2019-05-02 22:31 +0200
Re: Strategy-Objekte Patrick Roemer <sangamon@netcologne.de> - 2019-05-03 10:58 +0200
Re: Strategy-Objekte Patrick Roemer <sangamon@netcologne.de> - 2019-05-03 12:32 +0200
Re: Strategy-Objekte Joerg Meier <joergmmeier@arcor.de> - 2019-05-03 13:37 +0200
Re: Strategy-Objekte Patrick Roemer <sangamon@netcologne.de> - 2019-05-03 14:42 +0200
Re: Strategy-Objekte "Christian H. Kuhn" <qno-news@qno.de> - 2019-05-03 19:13 +0200
Re: Strategy-Objekte Thomas Noll <-_tn_-@web.de> - 2019-05-03 17:58 +0000
Re: Strategy-Objekte "Christian H. Kuhn" <qno-news@qno.de> - 2019-05-03 20:58 +0200
Re: Strategy-Objekte "Christian H. Kuhn" <qno-news@qno.de> - 2019-05-03 19:05 +0200
csiph-web