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