依赖注入,如何注入"other"对象?
Dependency injection, how to inject "other" object?
我总是听说它是硬编码的:
final class Dependency {}
class A
{
private Dependency $dependency;
public function __construct()
{
$this->dependency = new Dependency();
}
}
好的,让我们使用依赖注入:
class A
{
private Dependency $dependency;
public function __construct(Dependency $dependency)
{
$this->dependency = $dependency;
}
}
什么让它变得更好?我不能通过 Dependency
!
以外的任何内容
最常见的设计是依赖是一个多态对象,即一个基础class或接口。在这种情况下,依赖注入使您能够提供任何子类型,包括测试替身。
但即使 Concrete Dependencies 也有一些优势。正如评论所暗示的那样,依赖项可能隐藏了自己的大对象图。此外,构造函数注入使多个 class 可以共享一个实例,您可以将其注入到所有需要它的对象中。
我总是听说它是硬编码的:
final class Dependency {}
class A
{
private Dependency $dependency;
public function __construct()
{
$this->dependency = new Dependency();
}
}
好的,让我们使用依赖注入:
class A
{
private Dependency $dependency;
public function __construct(Dependency $dependency)
{
$this->dependency = $dependency;
}
}
什么让它变得更好?我不能通过 Dependency
!
最常见的设计是依赖是一个多态对象,即一个基础class或接口。在这种情况下,依赖注入使您能够提供任何子类型,包括测试替身。
但即使 Concrete Dependencies 也有一些优势。正如评论所暗示的那样,依赖项可能隐藏了自己的大对象图。此外,构造函数注入使多个 class 可以共享一个实例,您可以将其注入到所有需要它的对象中。