使用setter注入子类额外依赖

时间:2014-01-20 14:45:39

标签: php oop

举个例子,假设你有:

abstract class AbstractA {

    private $dependency1;
    private $dependency2;
    private $dependency3;

    public function __construct(One $dep1, Two $dep2, Three $dep3) {
        // Set the class properties...
    }

}

现在我们有一个班级B

class B extends AbstractA {

    private $dependency4;
    private $dependency5;

    public function __construct(One $dep1, Two $dep2, Three $dep3, Four $dep4, Five $dep5) {
        parent::__construct($dep1, $dep2, $dep3);
        $this->dependency4 = $dep4;
        $this->dependency5 = $dep5;
    }

}

如果我们的课程CDEF一直到Z,这些课程是{{1}的子/子类怎么办? 1}}并且有一个或多个额外的依赖项而不是AbstractA。如果由于某种原因想要更改AbstractA类中的依赖项的顺序或者删除其中一个依赖项,那么现在必须编辑类AbstractA中的构造函数一直到{{ 1}}这需要很长时间。

我在想如果你使用setter注入来注入子类可能需要的任何额外的依赖项,那么你不需要不断地将构造函数添加到子类中,因此在抽象类依赖项中进行更改不需要3个小时。

B

我知道为了使用这个类,你必须记住在实例化对象之后注入额外的依赖项,这是额外的工作,但从长远来看可以节省时间。

这是一个好主意还是坏主意?

0 个答案:

没有答案