Daniel Thoma: / (PHP) OOP vs. gekapselte Funktionen

Beitrag lesen

Hallo Rouven,

hmh, das kenne ich anders, einige andere offenbar auch.

Wieso, da steht doch genau, was ich sage. Evtl. erkennst Du nur den Unterschied nicht ;-)

Eine Fabrikmethode ist immer eine abstrakte Methode, die in abgeleiteten Klassen überschrieben wird, um benötigte Implementierungen einer Schnittstelle o.ä. zu erzeugen. Das sieht man auch sehr schön auf dem Klassendiagramm im Wikipedia-Artikel.

Eine Fabrikmethode ist keine statische Methode, die Objekte erzeugt. Eine Fabrikmethode erlaubt es, durch Ableitung und Überschreiben eine konkrete Implementierung einer Schnittstelle/abstrakten Klasse in eine andere Klasse einzubringen.

Die Beispiele im Artikel sind übringens in jedem Fall mist, da wird einfach nur irgend eine abstrakte Methode verwendet.

Das was du angegeben hast passt ziemlich genau zur FabrikMETHODE, es ist hingegen nicht deckungsgleich mit dem traditionellen Factory-Pattern

Ja, beide Entwurfsmuster stammen aus dem GoF-Buch und ich habe den Unterschied ja auch schon beschrieben. Factories sind oft eine Anwendung der Fabrikmethode, die Fabrikmethode wird praktisch in eine andere Klasse ausgelagert. Dadurch muss man nicht mehr ableiten um eine Implementierung einzubringen sondern man kann die Factory als Parameter übergeben.

wobei man sich jetzt wahrscheinlich ellenlang streiten kann, wie das Verhältnis von Factory, Interface und Factorymethode ist...

Nun, richtet man sich nach dem GoF-Buch, gibt es nicht so viel zu streiten. Nun kann man natürlich mit gutem Recht behaupten, dass man seine statische Methode Fabrikmethode nennen darf, wenn man das unbedingt tun will, aber ich bin dann doch eher dafür Begrifflichkeiten nicht zu wild durcheinander zu werfen ;-)

Grüße

Daniel