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


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

Re: Strategy-Objekte

Path csiph.com!news.dns-netz.com!news.freedyn.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2001-4dd4-3e7b-0-e12b-774c-9bfe-8880.ipv6dyn.netcologne.de!not-for-mail
From Patrick Roemer <sangamon@netcologne.de>
Newsgroups de.comp.lang.java
Subject Re: Strategy-Objekte
Date Fri, 3 May 2019 12:32:38 +0200
Organization news.netcologne.de
Distribution world
Message-ID <qah5c6$cgu$1@newsreader4.netcologne.de> (permalink)
References <gj12cbF43i4U1@mid.individual.net>
Mime-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 8bit
Injection-Date Fri, 3 May 2019 10:32:38 -0000 (UTC)
Injection-Info newsreader4.netcologne.de; posting-host="2001-4dd4-3e7b-0-e12b-774c-9bfe-8880.ipv6dyn.netcologne.de:2001:4dd4:3e7b:0:e12b:774c:9bfe:8880"; logging-data="12830"; mail-complaints-to="abuse@netcologne.de"
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24 Mnenhy/0.7.6.0
In-Reply-To <gj12cbF43i4U1@mid.individual.net>
Content-Language en-US
Xref csiph.com de.comp.lang.java:13246

Show key headers only | View raw


Responding to Christian H. Kuhn:
> Das riecht nach dem Strategy Pattern. Also etwa
> 
> interface ResultToScore {
>    public float score(Chessresult result);
> }
[...]
> Ich brauche aber gar kein Objekt, es würde mir reichen, wenn score()
> static wäre.

Ergänzend: Du kannst das natürlich auch basierend auf Methodenreferenzen
implementieren...

public static final class OnePoint {

  private OnePoint() {}

  public static float score(Chessresult result) {
    switch(result) {
      case WIN: return 1;
      case DRAW: return 0.5F;
      case LOSS: return 0;
      default: throw new IllegalStateException();
    }
  }
}

...und dann "OnePoint::score" verwenden, wo ein ResultToScore benötigt
wird. Das Strategy-Pattern ist damit weniger deutlich erkenntlich, aber
das ist eher ein Feature als ein Bug - Patterns sind halt Workarounds um
Unzulänglichkeiten der Sprache...

Leider hat man damit immer noch keinen knackigen, atomaren Namen für die
Implementierung - statt "new OnePoint()" oder "OnePoint.INSTANCE" jetzt
halt "OnePoint::score". In Scala könnte man die Methode (oder Funktion)
onePoint() nennen und ins Package-Objekt packen.

Viele Grüße
Patrick

Back to de.comp.lang.java | Previous | NextPrevious in thread | Next 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