Objekte werden in Java per new Keyword erzeugt. Möchte man die Anwendung möglichst lesbar, flexibel und testbar gestalten sollte man Gebrauch von einer Kapselung der Objekterzeugung machen. Hierzu bieten sich static factory methods und Patterns zur Objekterzeugung an.
In verschiedenen Büchern bin ich auf interessante Anmerkungen zu static factory methods und zum Factory Method Pattern gestoßen:
In Design Patterns Java Workbook (page 166) verdeutlicht eine Abbildung im lesenwerten Abschnitt “Recognizing Factory Method Pattern” die Abgrenzung des Factory Method Patterns zu anderen gängigen Objekt erzeugenden Methoden.
Head First: Design Patterns (page 159) betont, dass sich die beiden Pattern “Factory Method” und “Abstract Factory” unter anderem darin unterscheiden, dass “Factory Pattern” Vererbung verwendet, wohingegen “Abstract Factory” auf Komposition basiert. Dies wird im Interview der beiden Pattern noch einmal genauer erklärt.
In Effective Java(second edition) (item 1, page 5) wird auf den Vorteil von static factory methods gegenüber normalen Kontruktoren hingewiesen.
Nachteile von static factory methods werden im Abschnitt “Writing testable code” in JUnit in Action(Second Edition) (page 76, 5.2.7, “Favor generic methods”) beleuchtet. Daraus ein Zitat, das auch gut als Abschluss dieses Beitrags geeignet ist:
“Static code and the inability to use polymorphism in your application affect your application and tests equally.”
Viel Spaß bei der Lektüre