Java设计模式六大原则(3):依赖倒置原则

1.定义:高层次的模块不应该依赖低层次的模块,二者应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。

2.问题:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来完成。此时,假如类A是高层次的模块,如果修改则会引起不必要的风险。

3.解决:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接的与类B或者类C发生联系,此时会降低修改A的几率。

4.理解:在编程的过程中,需要尽量的提炼出抽象的模型,抽象的东西是稳定的,在Java中体现为接口以及抽象类,我们需要实现的功能则是通过实现接口或者抽象类的方法来实现。

依赖倒置的核心就是面向接口编程。

5.实例:

(1)定义接口:

interface IReader{  
   public String getContent();  
}

(2)实现功能:

class Newspaper implements IReader {  
       public String getContent(){  
           return "我会读报纸";  
       }  
   }  
   class Book implements IReader{  
       public String getContent(){  
           return "我会读书";  
       }  
   }  
     
   class Mother{  
       public void narrate(IReader reader){  
           System.out.println("妈妈开始讲故事");  
           System.out.println(reader.getContent());  
       }  
   }  
     
   public class Client{  
       public static void main(String[] args){  
           Mother mother = new Mother();  
           mother.narrate(new Book());  
           mother.narrate(new Newspaper());  
       }  
   }

这样修改无论是让妈妈实现什么功能,则无需修改Mother类。

6.注意:

(1).低层模块尽量都要有抽象类或接口,或者两者都有。

(2).变量的声明类型尽量是抽象类或接口。

(3).使用继承时遵循里氏替换原则。

注:个人学习随记!

猜你喜欢

转载自blog.csdn.net/wanjinYoung/article/details/81534891
今日推荐