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

    “● 高层模块不应该依赖低层模块,两者都应该依赖其抽象;

    ● 抽象不应该依赖细节;

    ● 细节应该依赖抽象。”

    翻译一下

    “● 模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的;

    ● 接口或抽象类不依赖于实现类;

    ● 实现类依赖接口或抽象类”

    “只要做到抽象依赖,即使是多层的依赖传递也无所畏惧!”

    “对象的依赖关系有三种方式来传递,如下所示。”

    “1.构造函数传递依赖对象”:构造函数注入

    “2.Setter方法传递依赖对象”:setter依赖注入

    “3.接口声明依赖对象:接口注入

    “● 每个类尽量都有接口或抽象类,或者抽象类和接口两者都具备

    这是依赖倒置的基本要求,接口和抽象类都是属于抽象的,有了抽象才可能依赖倒置。

    ● 变量的表面类型尽量是接口或者是抽象类”

    “● 任何类都不应该从具体类派生

    如果一个项目处于开发状态,确实不应该有从具体类派生出子类的情况,但这也不是绝对的,因为人都是会犯错误的,有时设计缺陷是在所难免的,因此只要不超过两层的继承都是可以忍受的。”

    “● 尽量不要覆写基类的方法

    如果基类是一个抽象类,而且这个方法已经实现了,子类尽量不要覆写。类间依赖的是抽象,覆写了抽象方法,对依赖的稳定性会产生一定的影响。

    ● 结合里氏替换原则使用

    在第2章中我们讲解了里氏替换原则,父类出现的地方子类就能出现,再结合本章的讲解,我们可以得出这样一个通俗的规则: 接口负责定义public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分的实现,实现类准确的实现业务逻辑,同时在适当的时候对父类进行细化”

    “在项目中,大家只要记住是“面向接口编程”就基本上抓住了依赖倒置原则的核心。”

    “我们在实际的项目中使用依赖倒置原则时需要审时度势,不要抓住一个原则不放,每一个原则的优点都是有限度的,并不是放之四海而皆准的真理,”

    “所以别为了遵循一个原则而放弃了一个项目的终极目标:投产上线和盈利。作为一个项目经理或架构师,应该懂得技术只是实现目的的工具,惹恼了顶头上司,设计做得再漂亮,代码写得再完美,项目做得再符合标准,一旦项目亏本,产品投入大于产出,那整体就是扯淡!你自己也别想混得更好!”

  • 相关阅读:
    springboot拦截器的拦截配置和添加多个拦截器
    ASCII对照
    爬虫出现403错误解决办法
    PhantomJS在Selenium中被标记为过时的应对措施
    Selenium 之订制启动Chrome的选项(Options)
    Selenium+PhantomJS使用时报错原因及解决方案
    python爬虫之xpath的基本使用
    JSONObject类的引用必须jar包
    selenium之使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
    PhantomJS 与python的结合
  • 原文地址:https://www.cnblogs.com/lakeslove/p/12970083.html
Copyright © 2011-2022 走看看