关于依赖注入

时间:2013-07-21 15:45:38

标签: spring

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点创建依赖注入的优势是什么。请详细解释我,因为我是春天的新手???

2 个答案:

答案 0 :(得分:3)

这不是Spring特定的设计原则,并且很难掌握你提供的片段,它没有明显的分离片段,但随着系统的发展变得更有帮助。

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

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

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

答案 1 :(得分:0)

实际上,依赖注入执行的部分是由您的代码完成的:

 Car car = new BMW();

依赖注入功能可以帮助您提及依赖关系,因为配置和框架实际上会将其余的对象注入引用。