私のタイトルが正しいかどうかわからないので、正しい用語を使用しているかどうかさえわかりません.
オブジェクトであるプロパティを持つクラスがあります。このプロパティを設定するときは、オブジェクトを作成する必要があります。私の質問は、密結合なしでこれを行うにはどうすればよいですか?
例:
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);
}
}
必要なオブジェクトをコンストラクトに渡すこともできますが、さらに必要な場合はどうなりますか?
工場のパターンを正しく理解すると、いつ何が変わるでしょうか? オブジェクトをどこかに作成する必要がありますか? オブジェクト自体ではなく、工場です。また密結合?私には無限に思えます。ただし、クラスをリファクタリングする場合、クラスがどこでどのように作成されるかは分離されます。
\Lib\some\Object のみを受け入れるように setSomeProperty 関数を設定した場合でも、最初にそれを渡す親オブジェクトによって作成される必要があります。それが作成された場所の配置をシフトするだけのようですか?
うまくいけば、私が尋ねようとしていることは十分に明確です。
前もって感謝します!
編集私が求めているのは、いつ、どこで、なぜ作成されるかのシーケンスです。