我是依赖注入的新手,但遇到了一些问题。
首先我知道这一点:
[摘自Pablo Deeleman的Christoffer Noring的书“ Learning Angular-Second Edition”:
随着我们的应用程序的成长和发展,我们的每个代码实体将在内部需要其他对象的实例,这样更好在软件工程领域中称为[dependencies。那个行动将这种依赖关系传递给依赖客户端的过程称为注射。
然后,在一些教学视频中,讲师说我们想在Car类中使用Tires服务,因此我们将其注入Car Class中,然后创建一个属性(轮胎)以保存它:
public class Car {
private Tires tires;
public Car(Tires tires){
this.tires = tires;
}
}
我对这个定义不满意,这让我感到困惑,因为我认为这个定义(教师的定义)与另一个定义形成对比。
关于DI(与About Angular相同)的大多数文章告诉我们,由于我们需要类中其他类对象的实例,因此我们有一些依赖类。但是在这个定义中,它告诉我们我们有来自不同类的对象,我们希望将其注入您的类中,您应该创建一些变量来保存这些值。
我认为令人困惑的问题是属性创建的时间。我认为首先我们创建属性,然后我们具有一些依赖关系,而不是将某些类假定为依赖项,然后创建一些属性以将那些值保存在主机类中。(客户端类)
有人可以解释一下吗?
我认为我们首先创建属性
我认为您可能会将OOP概念与注入混淆。
YouCar
service类(与OOP无关),需要访问Tire
service类,因此它希望在构造期间注入Tires
实例,并且需要将其保存以供以后使用,因此它将引用存储在field(不是属性)中。
当我们决定需要保存注入的引用以供以后使用时,将定义(声明,创建)该字段。
我想你可以说我们realize时定义(“创建”)该字段,我们需要对Tire
服务的引用,然后将其添加为对构造函数的依赖,但这仅仅是语义上的有关何时编写代码的信息,即在编写需要它的代码之前先准备并创建依赖项,还是在编写代码时即时创建依赖项。