从XML外部化对象创建或从构造函数中进行创建是否更好?

时间:2009-05-10 23:52:39

标签: php design-patterns oop

我有一些我在XML配置中创建的PHP类。我想知道的是:

我是否最好(从面向对象的角度来看)拥有工厂方法从XML创建这些类或将XML传递给构造函数来创建类?

工厂方法的优点是可以将构造与使用分开,更容易实现替代实现,但是您需要公开setter或将一大堆对象传递给构成它的状态的构造函数。

另一个细微之处在于,传入XML允许您自上而下创建对象,而一些较低的对象需要引用它们上面的那些对象。第二种方法会产生更多自下而上的东西。

或者是否有更多设计模式类型的方式来实现这个目标?

思想?

2 个答案:

答案 0 :(得分:1)

听起来你需要某种依赖注入框架。 Symphony的DI here有一个很好的轮廓。一个好的DI框架将帮助您设计一个干净且可测试的体系结构,这可以缓解构造函数需要太多参数的问题。

答案 1 :(得分:1)

对于干净的设计,最好保留用于在Foo之外完全从XML创建Foo的代码,但在某种工厂中。这样,如果你想添加一种从JSON,CSV或任何数据创建它的方法,Foo可以保持不变。