Rouven: / (PHP) OOP vs. gekapselte Funktionen

Beitrag lesen

Hello,

Aber wie wird dann entschieden, welche Klasse letztendlich für die Ausgabe zuständig ist?

das hängt vom Factory-Ansatz ab. Prinzipiell kann man das recht dynamisch halten, die extremste Variante wird auf Reflection (PHP Pendant unbekannt) setzen, d.h. du schnappst dir eine Konfigurationsdatei in der du einträgst ich möchte com.mypackage.MyImplClass verwenden und die Factory instanziert blind das was sie da liest. Damit kannst du also durch einen simplen Konfigurationseintrag komplett das Verhalten der Anwendung ändern.
Etwas weniger radikal wäre die Kombination mit einem Enumeration-Pattern, d.h. du kennst eine bestimmte Anzahl von Formaten und sagst der Factory "mir ist egal wie, aber ich brauch eine Ausgabe vom Typ CSV". Die Factory wiederum hat ein Verzeichnis, in dem Typ auf Implementierung abgebildet wird.
Wichtig ist halt in jedem Fall, dass nicht der Aufrufer entscheidet welche Implementierung er verwendet, er kennt die Auswahl gar nicht, er bekommt nur eine Klasse gem. einem definierten Interface in die Hand. Die dahinterliegende Implementierung liegt in der Verantwortung der Factory.

MfG
Rouven

--
-------------------
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
When the only tool you've got is a hammer, all problems start to look like nails.