我称它为“送货员”。我已经看到了它的几个变体,但问题是一个类具有依赖项,其唯一目的是将它传递给协作者并且从不使用依赖项本身。
(我使用 PHP 是因为它是我最熟悉的,但它与语言无关)
class Dependency{}
class B {
public function setDependency(Dependency $dependency) {
//...
}
}
class A {
private $b;
private $dependency;
public function __construct(Dependency $dependency, B $b) {
$this->dependency = $dependency;
$this->b = $b;
}
public function foo() {
$this->b->setDependency($this->dependency);
}
}
可能我在野外看到的最常见的变体是为此目的滥用继承,在父类中拥有一个存在的属性,以便子类可以访问依赖项,即使父类从未实际使用依赖项本身。
class Dependency{}
class A {
protected $dependency;
public function __construct(Dependency $dependency) {
$this->dependency = $dependency;
}
}
class B extends A {
public function foo() {
$this->dependency->bar();
}
}
我在代码中看到的比我想要的要多得多,这让我很不高兴!我只是想知道是否有一个名称,以便我可以将人们链接到阅读材料,了解为什么这是一个坏主意。就目前而言,我不知道要搜索什么!