2009-05-10 7 views
4

Ich habe einige PHP-Klassen, die ich aus XML-Konfiguration erstellen. Was ich gerne wissen würde ist:Ist es besser, die Objekt-Erstellung aus XML zu externalisieren oder aus dem Konstruktor zu machen?

Bin es besser (von einem objektorientierten Standpunkt) mit Factory-Methoden diese Klassen aus XML zu erstellen oder XML an den Konstruktor zu übergeben, um die Klassen zu erstellen? Der Factory-Ansatz hat den Vorteil, dass er die Konstruktion von der Verwendung trennt und alternative Implementierungen leichter zulässt, aber Sie müssen dann die Setter offenlegen oder eine ganze Reihe von Objekten an den Konstruktor übergeben, aus dem der Zustand besteht.

Eine weitere Feinheit ist, dass die Übergabe der XML die Objekte von oben nach unten erstellen kann und einige tiefer liegende Objekte Referenzen auf diese Objekte über ihnen benötigen. Die zweite Methode führt zu etwas, das mehr nach unten zeigt.

Oder gibt es etwas mehr Design-Muster-Art, dies zu tun?

Gedanken?

Antwort

1

Klingt wie Sie brauchen eine Art von Abhängigkeitsinjektion Rahmen. Es gibt einen ausgezeichneten Überblick über Symphonie DI here. Ein gutes DI-Framework wird Ihnen helfen, eine saubere und testbare Architektur zu entwickeln, die Probleme wie Konstruktoren, die zu viele Argumente benötigen, lindern kann.

1

Für ein sauberes Design wäre es am besten, den Code zum Erstellen eines Foo aus XML außerhalb von Foo vollständig beizubehalten, aber in irgendeiner Art von Fabrik. Auf diese Weise kann Foo gleich bleiben, wenn Sie eine Möglichkeit hinzufügen möchten, um es aus JSON, CSV oder anderen Daten zu erstellen.

Verwandte Themen