# Factory-Builder Pattern?



## slawaweis (31. Mai 2011)

Hallo,

in Java habe ich schon an einigen Stellen eine Kombination von Factory und Builder gesehen, z.B. bei der XML-Verarbeitung. Zuerst wird eine Instanz einer Factory geholt, mit welcher ein Builder konstruiert wird. Mit dem Builder können dann mehrere Objekte erzeugt werden. Abstrakt:

*Factory -> Builder -> Objekt*

Klingt doppelt gemoppelt, auch wenn dahinter der Sinn nach Flexibilität und Third Party Erweiterungen steckt.

So wollte ich fragen, gibt es dafür ein konkretes Pattern? Ist es überhaupt gutes Design?

Slawa


----------



## maki (31. Mai 2011)

Nun, es git die Factory, es gibt den Builder, es war noch nie verboten Muster zu kombinieren, genaugenommen werden Muster eigentlich immer kombiniert und sind nur selten in Reinkultur zu beobachten.


----------



## Marco13 (31. Mai 2011)

Ich glaube, es ging um die Frage, warum man nicht nur eins von beidem verwendet, weil das ja für den eigentlichen Zweck "meistens" schon reichen würde. (Ich kann da auch nur Spekulationen äußern, in der schon angedeuteten Richtung von erweiternden Modulen und unterschiedlichen Implementierungen für die Factory, vielleicht mit irgendwelchen ServiceLookups innen drin.. ist aber nur geraten)


----------



## mvitzATwork (31. Mai 2011)

Bezüglich des Beispieles mit dem XML ist hier der Factory Aufruf in der Tat dazu da, verschiedene Implementierungen (z.B. Xerces, Saxon, ...) nutzen zu können, die dann wiederum das XML intern anders aufbauen können.


----------



## slawaweis (1. Jun 2011)

danke für alle Antworten. Mir ist der Hintergrund dieser Lösung schon klar und auch ich habe schon Xerces auf diese weise verwendet. Was ich suche ist die theoretische Beschreibung so eines kombinierten Patterns, falls es den gibt, mit allein Eigenschaften und Vorteilen/Nachteilen. Ich habe inzwischen das Abstract Factory Pattern gefunden, was in diese Richtung geht, aber die Kombination Factory und Builder nicht behandelt:

Abstract factory pattern - Wikipedia, the free encyclopedia

Slawa


----------



## maki (1. Jun 2011)

> was in diese Richtung geht, aber die Kombination Factory und Builder nicht behandelt:


Muss es auch nicht, wie gesagt, ist normal.
Das konkrete Produkt ist in diesem Fall ein konkreter Builder für eine Implementierung.


----------



## Semox (7. Jun 2011)

Hallo slawaweis

Wie einer der Vorredner schon schrieb, Du bist nicht verpflichtet ein Pattern in Reinkultur zu benutzen. Patterns sind wie eine Vorgehensweise, die bestimmte wiederkehrende Aufgaben erleichtern sollen. Das bedeutet, daß Du durchaus ein Pattern mit einem anderen Pattern kombinieren kannst. Patterns sind kein Dogma - eher eine Empfehlung.

Nun - kürzlich habe ich ein Factory-Pattern für die Erstellung einer XML Datei durch eine andere Klasse verwendet.

Wenn Du Unsicherheiten hast, was das Thema der Software Patterns hast, dann kann ich Dir ein Buch empfehlen, was das Beste ist, das man in deutscher Sprache kaufen/leihen kann: 

Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software - Addison Wesley Verlag

Es hat mir kurz und knapp am Besten geholfen. Es bezieht sich in seinen Beispielen auf C++, aber das ist nicht so schlimm, weil die meisten Erklärungen reiner Text sind (mit ein paar Grafiken garniert). Es ist von Erich Gamma mitgeschrieben worden.

Viele Grüße,
Semo


----------

