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

    一、DIP简介(DIP--Dependency Inversion Principle):

    1、高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
    2、抽象不应该依赖于细节,细节应该依赖于抽象。
     
    高层模块包含了一个应该程序中的重要的策略选择和业务模型,正是这些高层模块才使得其所有的应用程序区别于其他,如果高层依赖于低层,那么对低层模块的改动就会直接影响到高层模块,从而迫使它们依次做出改动。
     
     
    二、举例说明:
    反面例子:

    缺点:耦合太紧密,Light发生变化将影响ToggleSwitch。
     
    解决办法一:
    将Light作成Abstract,然后具体类继承自Light。

    优点:ToggleSwitch依赖于抽象类Light,具有更高的稳定性,而BulbLight与TubeLight继承自Light,可以根据"开放-封闭"原则进行扩展。只要Light不发生变化,BulbLight与TubeLight的变化就不会波及ToggleSwitch。
    缺点:如果用ToggleSwitch控制一台电视就很困难了。总不能让TV继承自Light吧。
     
    解决方法二:
    优点:更为通用、更为稳定。
     
    三、DIP优点:
    使用传统过程化程序设计所创建的依赖关系,策略依赖于细节,这是糟糕的,因为策略受到细节改变的影响。依赖倒置原则使细节和策略都依赖于抽象,抽象的稳定性决定了系统的稳定性。
     
    、启发式规则:
    1、任何变量都不应该持有一个指向具体类的指针或者引用
    2、任何类都不应该从具体类派生(始于抽象,来自具体)
    3、任何方法都不应该覆写它的任何基类中的已经实现了的方法

     转自:http://www.cnblogs.com/feipeng/archive/2007/03/02/661812.html

  • 相关阅读:
    JavaWeb开发小结
    第一个Maven案例Hello Maven
    数据字典 dba_free_space及相对文件号RELATIVE_FNO 小结
    执行计划
    五分钟搞死一台服务器
    RAC 移动 OCR
    使用DBMS_STATS来收集统计信息【转】
    关于Freelists和Freelist Groups的研究【转】
    [转]Oracle中INITRANS和MAXTRANS参数
    linux套件安装过程中configure,make,make install的作用
  • 原文地址:https://www.cnblogs.com/CodeGuy/p/2420500.html
Copyright © 2011-2022 走看看