내 제목이 정확한지 확실하지 않은 경우 정확한 용어를 사용하고 있는지 확실하지 않습니다.의존성 주입 및/또는 공장 패턴
개체 인 속성을 가진 클래스가 있습니다. 이 속성을 설정할 때 객체가 만들어 져야합니다. 제 질문은 어떻게 단단한 커플 링없이 이것을 할 수 있습니까?
는예 :
는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 만 받아들이도록 설정하면 부모 개체가이 개체를 전달하기 위해 계속 전달해야합니다. 생성 된 위치의 배치 만 이동하는 것처럼 보입니까?
바라기를 나는 묻고 자하는 것이 무엇인지 잘 알고 있기를 바랍니다.
미리 감사드립니다.
편집 내가 묻는 것은 언제, 어디서, 왜 만들어지는 순서입니다.
하지만이 팩토리 객체는 어디서 만듭니 까? 의존성으로 전달해야합니까? 정적이없는 것이 바람직합니다. – John
필요한 것을 만들기 전에 먼저 만듭니다. –
그럼 여전히 단단히 결합 되었습니까? 예 : public function something() {$ factory = new factory(); }? 세터에 대해 말하지 않습니까? – John