依赖倒转原则 【
Dependency Inversion Principle(DIP) 就是在我们编程的时候方法的参数类型,变量,对于其他具体类的依赖,我们尽量的使用抽象类。
就是说尽量依赖于抽象,而不是依赖于实现。
在书中两种表述:
(1),Abstraction should not depend on details.details should depend on abstraction. (抽象不应当依赖于细节,细节应当依赖于抽象)。Abstraction就像是建筑物的基础,而其实现类就是在基础上面一层一层的往上面走。你拆掉最上面那层,和拿走最下面的基础,有什么不同了,这就是差异了。所以Abstraction是要相当的稳定,是维护的重点。也正是因为稳定,所以我们尽量的依赖于Abstraction,既是稳定系统,也是灵活系统。
(2),Program to an Interface,not an implementation(要针对接口编程,不要针对实现编程)
应当使用java接口和抽象java类进行变量的类型声明,参数的类型声明,方法返回值的类型和数据类型的转换。
在这里我就有一个问题了。
List l= new Vector();而不要使用 Vector l=new Vector();我就有疑问 如果我一个类B 继承于类A,B有一些A不存在的方法,而我的方法中我得使用B,这里那就菜了。
所以看到这句话了。保证做到这点,一个具体的类应当只实现Java接口,和抽象java类中声明过的方法,而不应当给出多余的方法。
依赖倒装原则是很难实现的,在这些原则中,因为从上面也可以看到。还是使用了Vector类这个具体的类,还是对具体的类有依赖,所以,对于依赖倒装的创建new Vector(),有一个专门的模式,工厂模式,不过只是把违反这个原则的地方压缩到一个类里面。