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做一些重複代碼,如:(僅適用於依賴構造函數)
溶液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;
}
}
我想說這取決於一點,但是解決方案B看起來對我來說最直接,當代碼增長時,這通常是很好的選擇。另外我認爲你已經簡化了這個例子,並且在你這樣做的時候它可能已經失去了問題。 – hakre