举个例子,假设你有:
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;
}
}
如果我们的课程C
,D
,E
,F
一直到Z
,这些课程是{{1}的子/子类怎么办? 1}}并且有一个或多个额外的依赖项而不是AbstractA
。如果由于某种原因想要更改AbstractA
类中的依赖项的顺序或者删除其中一个依赖项,那么现在必须编辑类AbstractA
中的构造函数一直到{{ 1}}这需要很长时间。
我在想如果你使用setter注入来注入子类可能需要的任何额外的依赖项,那么你不需要不断地将构造函数添加到子类中,因此在抽象类依赖项中进行更改不需要3个小时。
B
我知道为了使用这个类,你必须记住在实例化对象之后注入额外的依赖项,这是额外的工作,但从长远来看可以节省时间。
这是一个好主意还是坏主意?