-3
interface Car {
    public void tyres();
}

class BMW implements Car {
    public void tyres() {
        System.out.println("BMW");
    }
}

class HMW implements Car {
    public void tyres() {
        System.out.println("HMW");
    }
}

public class DependencyInjection {
private Car car;

    public void draw() {
         this.car.tyres();
    }

    public void setCar(Car car) {
        this.car = car;
    }

    public static void tyres1(Car c) {
        c.tyres();
    }

    public static void main(String[] args) {
        Car car = new BMW();
        tyres1(car);//point 1
        DependencyInjection dep=new DependencyInjection();
        dep.setCar(car);//point2
        dep.draw();
    }
}

我想澄清一下我们在第 1 点和第 2 点创建依赖注入的优势是什么。请详细解释一下,因为我是 spring 新手???

4

2 回答 2

3

这不是 Spring 特定的设计原则,在您提供的片段中很难掌握,它没有明显的分离部分,但随着系统的增长变得更有帮助。

通过删除对具体类的引用,您消除了“类型耦合”,这意味着内部类可以保持“关闭”:如果相关类的实现发生变化并且客户端代码可以使用不同的方式根据需要进行调整,而无需内部类更改或了解实现。这也有助于确保类中的方法主体专注于其角色和特定工作,而不是与任何其他实现纠缠在一起(这有助于明确定义应该被视为 API 的一部分)。

您还应该阅读有关 SOLID 类的概念: http://en.wikipedia.org/wiki/SOLID_(object-oriented_design)

根据我的经验,最直接的好处是它还允许进行更完整、独立的单元测试,如果这是您的开发过程的一部分(随着系统的发展也建议这样做),这非常重要。

于 2013-07-21T16:03:23.147 回答
0

实际上,依赖注入所做的那部分是由您的代码完成的:

 Car car = new BMW();

依赖注入功能可帮助您将依赖项作为配置提及,而框架实际上将其余的对象注入到引用中。

于 2013-07-21T16:22:27.820 回答