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;
    }
}