2012-11-03 9 views

Antwort

19

Effektives Java-Objekt 1: Berücksichtigen Sie statische Factory-Methoden anstelle von Konstruktoren.

Einige der Vorteile der statischen Factory-Methoden umfassen:

  • Sie Typ Parameter pre-Java 7.
  • Sie automatisch uns Vererbungsmuster steuern lassen folgern: wir Sammlungstypen innerhalb Guava, ohne dass eine Unterklasse kann außerhalb Code Unterklasse sie.
  • Sie lassen uns eine beliebige Unterklasse des gewünschten Typs zurückgeben, wodurch wir die Implementierungsdetails besser verbergen können.
+5

Buchinhalt ist [online] (http://my.safaribooksonline.com/book/programming/java/9780137150021/creating-and-destroying-objects/ch02lev1sec1) zu. – david

+1

Ich würde den Vorteil hinzufügen, den ich aus der Sicht des Endanwenders am wichtigsten finde: Sie haben einen klareren Namen. 'newHashMapWithCapacity (100)' ist viel klarer als 'new HashMap (100)'. –

+2

@JBNizet: Wir stellen diese Methoden für die JDK-Collection-Implementierungen zur Verfügung, aber für unsere selbst erstellten Collection-Typen haben wir eigentlich keine detaillierteren Fabriknamen als 'create'. (Ich bin mir nicht sicher, ob das genau der richtige Anruf war, genau aus dem Grund, den du beschreibst.) –