设计模式的6大原则-依赖倒转原则


 1.什么是依赖倒转原则

   要依赖于抽象,不要依赖于具体。

   简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。

   要求客户端依赖于抽象耦合(耦合发生在一个具体类和一个抽象类[或者是接口]之间)(关键)

2..为什么要使用依赖倒转原则?

   传统的过程性代码系统的设计办法倾向于使高层模块依赖于低层次的模块,抽象层依赖于实现层。DIP就是要把这个错误的依赖关系倒转过来。

    抽象层:是应用系统的业务逻辑和宏观的,对整个系统起到重要的战略性的决定的,是必然性的体现。

    具体层:是一些次要的与实现有关的算法和逻辑,是战术性的决定,带有相当大的偶然性。

    具体层次的代码会经常的变动,不能避免的出现错误。如果是抽象层依赖于具体层的话,那么具体层的变化就会立即影响到抽象层的宏观业务逻辑,导致微观决定宏观,战术决定战略,微观决定宏观的荒唐事情出现。

3.复用与可维护性的倒转

   传统模式的复用和维护:具体层次的复用,比如算法,数据结构,函数库的复用,会导致依赖于每一行代码。

   DIP模式的复用和维护:抽象层业务逻辑的复用,是做决定的地方,较为稳定。

    实现:抽象层次的模块要相对于独立月具体层次的模块的话,那么抽象的模块的复用就相对容易了。

4.如何做到DIP

   针对接口编程而不是针对实现编程:应当使用Java接口和Java抽象类进行变量的类型声明,参量的类型声明,方法的返还类型声明,以及数据类型的转换等。要保证做到这一点,一个具体Java类应当只实现Java接口和抽象Java类中声明过的方法,而不应到给出多余的方法。

    以抽象方式耦合是依赖倒转原则的关键。由于一个抽象耦合关系总要涉及具体类从抽象类基础,并且需要保证在任何应用到基类的地方都可以换成其子类,因此,里氏代换原则是依赖倒转原则的基础。

    涉及到的设计模式:

     工厂模式,模版模式,迭代子模式

  

   

猜你喜欢

转载自8586.iteye.com/blog/1967156