我有一些我在XML配置中创建的PHP类。我想知道的是:
我是否最好(从面向对象的角度来看)拥有工厂方法从XML创建这些类或将XML传递给构造函数来创建类?
工厂方法的优点是可以将构造与使用分开,更容易实现替代实现,但是您需要公开setter或将一大堆对象传递给构成它的状态的构造函数。
另一个细微之处在于,传入XML允许您自上而下创建对象,而一些较低的对象需要引用它们上面的那些对象。第二种方法会产生更多自下而上的东西。
或者是否有更多设计模式类型的方式来实现这个目标?
思想?
答案 0 :(得分:1)
听起来你需要某种依赖注入框架。 Symphony的DI here有一个很好的轮廓。一个好的DI框架将帮助您设计一个干净且可测试的体系结构,这可以缓解构造函数需要太多参数的问题。
答案 1 :(得分:1)
对于干净的设计,最好保留用于在Foo之外完全从XML创建Foo的代码,但在某种工厂中。这样,如果你想添加一种从JSON,CSV或任何数据创建它的方法,Foo可以保持不变。