2009-05-10 10 views
4

J'ai quelques classes PHP que je crée à partir de XML config. Ce que je voudrais savoir est:Est-il préférable d'externaliser la création d'objet à partir de XML ou de le faire à partir du constructeur?

Est-ce que je ferais mieux (d'un point de vue orienté objet) ayant des méthodes d'usine pour créer ces classes à partir de XML ou passer en XML au constructeur pour créer les classes? L'approche d'usine a l'avantage de séparer la construction de l'utilisation et de permettre plus facilement des implémentations alternatives, mais vous devez ensuite exposer des setters ou transmettre tout un tas d'objets au constructeur qui constitue son état. Une autre subtilité de ceci est que le passage dans le XML vous permet de créer les objets de haut en bas et certains objets plus bas auront besoin de références à ces objets au-dessus d'eux. La deuxième méthode résultera en quelque chose de plus bottom up.

Ou y a-t-il d'autres façons de faire?

Pensées?

Répondre

1

On dirait que vous avez besoin d'une sorte de cadre d'injection de dépendance. Il y a un excellent aperçu de DI here de Symphony. Un bon framework DI vous aidera à concevoir une architecture propre et testable qui peut résoudre des problèmes tels que les constructeurs ayant besoin de trop d'arguments.

1

Pour un design propre, il serait préférable de conserver le code pour créer un Foo à partir de XML en dehors de Foo complètement, mais dans une sorte d'usine. De cette façon, Foo peut rester le même si vous voulez ajouter un moyen de le créer à partir de JSON, CSV ou d'autres données.

Questions connexes