2013-07-21 120 views
-2
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点创建依赖注入和point2.Please解释我详细为我是新来春???关于依赖注入

+0

在point1我宁愿将它称为正常的多态方法调用而不是依赖注入。你可能想阅读[关于依赖注入的维基百科文章](http://en.wikipedia.org/wiki/Dependency_injection)。 –

回答

3

这不是一个Spring特定的设计原则,在你提供的代码片段中很难理解,它没有明显的分离片段,但随着系统的增长变得更有用。

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

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

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

0

其实什么依赖注入做的那部分是由你的代码来完成:

Car car = new BMW(); 

依赖注入功能可以帮助您提到的依赖性,配置和框架实际上没有对象来引用,其余注入。