Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.java > #13244

Strategy-Objekte

From "Christian H. Kuhn" <qno-news@qno.de>
Newsgroups de.comp.lang.java
Subject Strategy-Objekte
Date 2019-05-02 22:31 +0200
Message-ID <gj12cbF43i4U1@mid.individual.net> (permalink)

Show all headers | View raw


Liebe Gemeinde,

bevor hier ganz zugemacht wird:

Ich bastele an einem Programm zur Verwaltung von Schachturnieren. Die
möglichen Ergebnisse einer Partie habe ich in einem Enum Chessresult mit
den Werten WIN, DRAW, LOSS dargestellt. Für die Berechnung der Paarungen
der nächsten Runde nach Schweizer System ist der aktuelle Punktestand zu
bestimmen. Der kann aus diesen drei Werten durch mindestens drei
gebräuchliche Wertgruppen berechnet werden:

- 1, 0,5, 0 (bei Einzelpartien gebräuchlich)
- 2, 1, 0 (eher für Mannschaftskämpfe)
- 3, 1, 0 (sowohl bei Einzel- als auch Mannschaftsturnieren gelegentlich
anzutreffen)

Das riecht nach dem Strategy Pattern. Also etwa

interface ResultToScore {
   public float score(Chessresult result);
}

Die einzelnen Strategien möchte ich als nicht-anonyme Klasse definieren.
Eine Lambda-Expression an geeigneter Stelle liest sich elegant, ist aber
nicht wiederverwendbar. Egal, wo ich lese, ist die Implementation sowas wie

public class OnePoint implements ResultToScore {
   @Override
   public float score(Chessresult result) {
      switch (result) {
         case Chessresult.WIN: return 1;
         case Chessresult.DRAW: return 0.5;
         case Chessresult.LOSS:
         default: return 0;
      }
   }
}

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. Gibt es einen Grund, warum in allen Beispielen,
die ich finde, die Strategy-Klassen so implementiert werden, dass es von
jeder verschiedene unterscheidbare Instanzen gibt, obwohl das auch in
den meisten Beispielen sinnlos ist? Oder mache ich mir zuviel Gedanken?

TIA
QNo

Back to de.comp.lang.java | Previous | NextNext in thread | Find similar


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