MyClass
フィールドのバウンスがあり、各値は別のインスタンス値に依存し、最後に。に依存しますDependencyClass
。非常に簡単な例:
ソリューションA(コンストラクターを使用)
public class MyClass
{
private $myField1, $myField2;
public function MyClass(DependencyClass $dependency)
{
$value = $dependency->getValue();
$value++; // Computations on dependency value
$this->myField1 = $value + 3;
$this->myField2 = $value - 1;
}
public function getMyField1()
{
return $this->myField1;
}
public function getMyField2()
{
return $this->myField2;
}
}
私の質問は、クラスコンストラクターはこの計算ロジックを配置する適切な場所ですか?または、次のようなコードの複製を行う方が適切です。
ソリューションB(依存関係のみのコンストラクター)
public class MyClass
{
private $dependency;
public function MyClass(DependencyClass $dependency)
{
$this->dependency= $dependency
}
public function getMyField1()
{
$value = $this->dependecy->getValue();
$value++; // Computations on dependency value
return $value + 3;
}
public function getMyField2()
{
$value = $this->dependecy->getValue();
$value++; // Computations on dependency value
return $value - 1;
}
}
または、MyClass
単にコンテナを作成し、次のような外部アセンブラクラスを使用します。
ソリューションC(外部アセンブラー)
Class Assembler
{
public getMyClass()
{
$dependency = new Dependency();
$value = $dependency->getValue();
$value++; // Computations on dependency value
$myClass = new MyClass();
$myClass->setMyField1($value + 3);
$myClass->setMyField2($value - 1);
return $myClass;
}
}