我不确定我的标题是否正确,因为我甚至不确定我是否使用了正确的术语。
我有一个包含属性的类,该属性是一个对象。在设置此属性时,必须创建该对象。我的问题是如何在没有紧密耦合的情况下完成这个过程?
示例:
class A
{
protected $_depending;
protected $_somePropertyObject;
public function __construct(\Lib\Dependency $depending)
{
$this->_setDepending($depending);
}
protected function _setDepending(\Lib\Dependency $depending)
{
$this->_depending = $depending;
}
public function setSomeProperty($someProperty)
{
// I want to prevent this
$this->_somePropertyObject = new \Lib\some\Object($someProperty);
}
}
我可以通过构造函数传递所需的对象,但如果需要更多怎么办?
如果我正确理解工厂模式,那么会发生什么变化?我仍然需要在某个地方创建对象吗?不是对象本身,而是工厂。再次紧耦合?对我来说似乎是无限的。重构类时,它们的制作方式和位置被隔离出来。
如果我将setSomeProperty函数设置为仅接受\Lib\some\Object,则仍然需要由传递它的父对象创建。似乎只是将其创建位置转移了一下?
希望我表达得足够清楚。
提前感谢您!
编辑:我的问题是创建何时、在哪里、为什么创建的顺序。
main()
方法或某个框架调用的方法)你可以在其上构建更多声明性抽象,但最终你必须在某个地方说new Something()
! - Francis Avilanew ClassName
表达式,请传递一个工厂实例,然后将其转换为“$factoryObject()”。我编写的“ClassFactory”类应该涵盖90%的用例。闭包覆盖了100%! - Francis Avila