Java Enum – Das bessere Singleton

Das Singleton Pattern ist wohl eines der verbreitetsten Design Pattern in der Java Welt. Umso cooler ist es, dass sich Mithilfe einer Enum, ein Singleton erheblich einfacher implementieren lässt.

Vorteile

  • Weniger Code und bessere Lesbarkeit.
  • Enum Singleton kümmern sich um die Serialisierung.
  • Die Erstellung einer Enum Instanz ist Thread-safe.

Implementierung mit Enum

/*
* Singleton Pattern mit Enum
*/

public enum EasySingleton {
   INSTANCE;

   public String sayLala() {
      return "Lala";
   }
}

Aufruf einer Methode des Singletons:

EasySingleton.INSTANCE.sayLala();

Implementierung ohne Enum

/*
* Singleton Pattern ohne Enum
*/

public class EasySingleton {
   private static EasySingleton me = null;

   private EasySingleton() {}

   public static synchronized EasySingleton getInstance() {
      if (me == null) {
         me = new EasySingleton();
      }
      return me;
   }

   public String sayLala() {
      return "Lala";
   }
}

Aufruf einer Methode des Singletons:

EasySingleton.getInstance().sayLala();

Mehr zu dem Thema: http://javarevisited.blogspot.com/2012/07/why-enum-singleton-are-better-in-java.html#ixzz3tSa2Bfnj

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