zoukankan      html  css  js  c++  java
  • 依赖倒转原则

    依赖倒转原则


    基本介绍:

    1. 高层模块不应该依赖底层模块,二者都应该依赖其抽象
    2. 抽象不应该依赖细节,细节应该依赖抽象
    3. 中心思想是面向接口编程
    4. 基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础的架构要稳定得多。在Java中,抽象指接口或抽象类,细节就是具体的实现类
    5. 使用接口或抽象类的目的是制定好规范,而不涉及任何具体的操作,把展开的细节任务交给他们的实现类去完成

    例如以下情景:

    Person类需要接受消息的时候,在方法定义中调用了Class类Email,其实现简单,但是可拓展性差,当传递参数发生需求变更时,需要重载方法Person类中receive()

    在对于依赖倒置原则来说,细节的receive方法实现应该依赖于抽象,即依赖接口IReceive接口,此时可拓展性好,在需求变更时只需要客户端传递新的变更参数即可

    代码实现如下:

    Class Person{
       public void receive(IRecive message){
           message.sendMessage();
    }     
    }
    
    interface IReceive{
      sendMessage();
    }
    
    class Email  implements IReceive {
      public void sendMessage(){
         System.out.print("邮件发送消息");
    }
    }
    
    class WeiXin implements IReceive {   
      public void sendMessage(){
         System.out.print("微信发送消息");
    }
    }
    

      


    注意事项与细节:

    1. 底层模块进来都要有抽象类或接口,程序稳定性更好

    2. 变量的声明类型尽量是抽象类或接口,这样我们的变量引用和实际对象间,就存在一个缓冲层,有利于程序的拓展和优化

    3. 继承时遵循里氏替换原则

     

  • 相关阅读:
    【二分图】HEOI2012 朋友圈
    【转载】动态规划—各种 DP 优化
    【默哀】京阿尼纵火案一周年
    【暑假集训】HZOI2019 Luogu P1006 传纸条 二三四维解法
    【暑假集训】HZOI2019 水站 多种解法
    最小二乘法求线性回归方程
    51Nod 最大M子段和系列 V1 V2 V3
    【博弈论】51Nod 1534 棋子游戏
    【最短路】CF 938D Buy a Ticket
    51nod1524 最大子段和V2
  • 原文地址:https://www.cnblogs.com/wuyiyuan/p/15221804.html
Copyright © 2011-2022 走看看