MyClass
에는 필드 바운스가 있습니다. 각 값은 다른 인스턴스 값에 따라 달라지며 결국에는 DependencyClass
에 있습니다. 아주 간단한 예 :PHP 생성자와 서로 종속 된 필드 바운스
솔루션 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;
}
}
내 질문이있다 클래스 생성자 내가이 계산 로직을 넣어해야 적절한 장소인가? 또는 같은 일부 코드 중복 할 더 appropropriate 다음과 같습니다 (전용 종속성에 대한 생성자를)
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;
}
}
을
솔루션 B 또는 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;
}
}
솔루션 B는 나에게 매우 똑바로 보이지만 코드가 커지면 좋을 때가 많습니다. 또한 예제를 많이 단순화했다고 생각합니다. 그렇게 해보면 문제가 사라질 수도 있습니다. – hakre