Zitat

Lambda Expressions – Template Method Pattern reloaded

Beim Template Method Pattern wird in einer abstrakten Klasse das Skelett eines Algorithmus definiert. Die konkrete Ausformung der einzelnen Schritte wird an Unterklassen delegiert. Dadurch besteht die Möglichkeit, einzelne Schritte des Algorithmus zu verändern oder zu überschreiben, ohne dass die zu Grunde liegende Struktur des Algorithmus modifiziert werden muss. Die Template Method ruft abstrakte Methoden auf, die erst in den Unterklassen definiert werden. Diese Methoden werden auch als Hook Methoden bezeichnet.

Durch die Verwendung von Lambda Expressions kann dieses Pattern kompfortabler implementiert werden. Anstatt die Hook Logik in Unterklassen zu implementieren, kann dies nun in Lambda Expressions erfolgen. Es ist nicht mehr nötig mehrere Klassen zu implementieren. „Lambda Expressions – Template Method Pattern reloaded“ weiterlesen

Java 8 – Lambda Ausdrücke und Collection API

Was dem JavaScipt-Programmierer schon lange als Werkzeug dient, wird ab Version 8 endlich im Java Standard enthalten sein: die sogenannten Lambda Ausdrücke. Von dieser Erweiterung wird insbesondere die Collection-API profitieren, denn diverse Methoden werden Lamda Ausdrücke erhalten können. Die folgenden Beispiele zeigen Code-Fragmente mit und ohne Lambda Ausdrücke. „Java 8 – Lambda Ausdrücke und Collection API“ weiterlesen

Java 8 – Default Method

Eine der wichtigen Erweiterungen in Java 8 werden die sogenannten „Default Methods“ sein. Diese werden in Interfaces definiert und sind nicht abstrakt, sie haben einen Methodenrumpf.
Im folgenden Beispiel hat die Methode isSquare des Interfaces Rectangle eine Default-Implementierung. Die Klassen, die Rectangle implementieren, müssen nicht isSquare implementieren, sondern können die Default-Implementierung erben.

public interface Rectangle {
    double getWidth();
    double getHeight();
    boolean isSquare() default {
        return getWidth() == getHeight();
    }
}

Die Klasse SimpleRectangle impentiert nicht isSquare, sondern erbt die Default-Implementierung.

public class SimpleRectangle implements Rectangle {
    private final double width;
    private final double height;
    public SimpleRectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }
    public double getHeight() {
        return height;
    }
    public double getWidth() {
        return width;
    }
}

„Java 8 – Default Method“ weiterlesen