6大设计原则之依赖倒置原则

依赖倒置原则的定义

依赖倒置原则的原始定义如下:

High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions.

翻译过来,包含如下三层含义:

  1. 高层模块不应该依赖低层模块,两者都应该依赖其抽象
  2. 抽象不应该依赖于细节
  3. 细节应该依赖于抽象

高层模块和低层模块容易理解,每一个逻辑的实现都是由原子逻辑组成的,不可分割的原子逻辑就是低层模块,原子逻辑的再组装就是高层模块.抽象就是指 接口或抽象类,两者都不能被实例化;细节就是实现类.

依赖倒置原则在Java语言中表现为:

  1. 模块间的依赖通过抽象产生,实现类之间不发生直接依赖,其依赖关系是通过接口或抽象类产生的
  2. 接口或抽象类不依赖于实现类
  3. 实现类依赖接口或抽象类

依赖倒置原则的好处

采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性.

依赖的三种写法

在开发中,对象的依赖关系有三种方式来传递

1.构造函数传递依赖对象

在类中通过构造函数声明依赖对象,这种方式叫做构造函数注入

2.Setter方法传递依赖对象

在抽象中设置Setter方法声明依赖关系, 在对象创建后,调用方法注入,这种方式叫做 Setter依赖注入

3.接口声明依赖对象

在具体方法中声明依赖对象,在调用方法时将对象传入, 这种方式叫做 接口注入


依赖倒置原则的本质就是通过抽象使各个类或模块的实现彼此独立,互不影响,实现模块间的松耦合,我们怎么在项目中使用能,遵循以下几个原则就可以:

  1. 各个类尽量都有接口或抽象类,或者两者都有
  2. 变量的表面类型尽量是接口或者抽象类,不是绝对,比如一个工具类,一般是不需要接口或抽象类的
  3. 任何类都不应该从具体类派生
  4. 尽量不要覆写基类的方法
  5. 结合里氏替换原则(父类出现的地方,子类就可以出现),例如,接口负责定义public属性和方法,并且声明与其他对象的依赖关系,抽象类负责公共构造部分的实现,实现类精确的实现业务逻辑同时在适当的时候对父类进行细化

依赖倒置原则是6个设计原则中最难以实现的原则,他是实现开闭原则的重要途经,依赖倒置原则没有实现,就别想实现对扩展开放,对修改关闭.在项目中,只要记住是"面向接口编程"就基本抓住了依赖倒置原则的核心

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/508561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文写作——paper Note

论文的一些细节: 1)数字10以下一般用英文单词,10以上用阿拉伯字母; 2)公式最后要有标点,逗号(后面跟where。。。)或者句号; 3)figure的caption尽量多写一点内…

6大设计原则之接口隔离原则

接口隔离原则的定义 什么是接口. 实例接口,比如定义了一个Person类,然后 Person p new Pserson(); 产生一个实例,Person类就是 p 的接口类接口,就是Java中使用 interface 定义的接口 什么是隔离 隔离要求将接口尽量细化,同时接口中的方法尽量少. 接口隔离原则的实现 比如…

6大设计原则之迪米特法则

迪米特法则的定义 迪米特法则也称为最少知识原则,一个对象应该对其他对象有最少的了解. 通俗的讲,一个类应该对自己需要耦合或调用的类知道的最少,被调用类的内部是如何复杂都和我没关系,我就知道你的这些public方法,我就调用这么多,其他的我一概不关心. 迪米特法则对类的低耦…

论文写作——origin画图

一 origin的安装 详见下面网址,内涵下载路径和破解方法。 http://www.ddooo.com/softdown/51005.htm 1. 下载origin 网址:https://thepcgo.com/origin-pro-8-0-free-download/ 2.下载破解相关压缩包 链接:https://pan.baidu.com/s/1LwA…

论文写作——texstudio+texlive

一 安装 安装见下方链接 https://jingyan.baidu.com/article/63f236287febc50208ab3deb.html 二 使用 1、选择模板 IEEE: https://ieeeauthorcenter.ieee.org/create-your-ieee-article/use-authoring-tools-and-ieee-article-templates/ieee-article-templates/ ACM:…

6大设计原则之开闭原则

开闭原则的定义 开闭原则的定义: 一个软件实体,如类、模块和函数应该对扩展开放,对修改关闭.即一个软件实体应该通过扩展来实现变化,而不是通过修改已有的代码来实现变化. 软件实体包括一下部分 项目或软件产品中按照一定的逻辑规则划分的模块抽象和类方法 注意: 开闭原则对…

论文写作——如何作图(visio/ppt+Adobe Acrobat Pro)

前言 在论文中,基本上的图都要求是矢量图,就是即使放大也不会失真。 .eps是最常被要求用的,然而我使用了各种方法(可以试试在线转换格式,很方便)都没能成功转成打得开看得见的.eps格式,又懒得…

23种设计模式之单例模式

单例模式的定义 定义: 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的通用类图如下: 单例模式的优缺点 单例模式的优点: 由于单例模式在内存中只有一个实例,减少了内存开支,特别是一个对象需要频繁的创建、销毁时,而且创建和销毁时性能又无…

讲座记录——大数据共享和交易的挑战与初探

讲者:中科大李向阳教授 数据市场特点: 数据量大且无限供应、价格差异大、所有权不确定、无标准衡量指标、可无限复制 数据交易模式: 买卖双方面对面交易 、通过第三方平台交易(京东万象、数据宝、上海数据交易中心……&#x…

23种设计模式之工厂方法模式

工厂方法模式的定义 定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类. 工厂方法使一个类的实例化延迟到其子类 工厂方法模式的通用类图: 其中 Product 负责产品的共性,实现对事物最抽象的定义; Creator 为抽象创建类, 也就是抽象工厂, 具体如何创建产品类是由具体…

NS2相关学习——无线网(2)

在这里,我们将完成一个简单的无线多跳场景 首先,定义的参数如下所示: set val(chan) Channel/WirelessChannel set val(prop) Propagation/TwoRayGround set val(netif) Phy/WirelessPhy set val(mac) Mac/802_11 …

23中设计模式之抽象工厂模式

抽象工厂模式的定义 定义: 为创建一组相关或互相依赖的对象提供一个接口,而且无须制定它们的具体类 抽象工厂模式的实现 两个产品族, 其类图如下: 抽象产品类代码如下: 产品A的1级和2级类代码如下: 产品B与产品A类似 抽象工厂类 AbstractCreator 的职责是定义 每个工厂要实…

California Fault Lines: Understanding the Causes and Impact of Network Failures

摘要: 影响端到端服务可用性的主要因素中,网络组件故障可能是最无法预知得。 失败发生的频率多高,持续多久,原因是什么以及它们如何影响客户? 传统上,回答诸如此类的问题需要在网络中广泛部署的专用&#x…

23种设计模式之模板方法模式

模板方法模式的定义 定义一个操作中的算法的框架,而将一些步骤延迟到子类中. 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤. 通俗的讲,就是将子类相同的方法, 都放到其抽象父类中 类图如下: 其中, AbstractClass 叫抽象模板, 它的方法分为以下两类: 基…

课堂笔记——Ubiquitous Computing

一 课程相关 1、Course Objectives provide a unified overview on the broad filed of Ubiquitous Computing 2、Evaluation short talk1(25%)第三次课 paper reading of 2017(Percom,Ubicomp,IJCAI,KDD,AAAI) short talk 2 (25%) 第五次课 pape…

23种设计模式之建造者模式

建造者模式的定义 建造者模式也叫生成器模式, 定义如下: 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示 类图如下: 在建造者模式中, 四个角色如下: Product 产品类: 通常是实现了模板方法模式, 也就是有模板方法和基本方法Builder 抽象建造者…

23种设计模式之原型模式

原型模式的定义 定义: 用原型实例指定创建对象的种类, 并且通过拷贝这些原型创建新的对象. 通俗的讲,就是不再使用new 来创建对象, 而改用 clone 方法来得到新的对象 原型模式的核心是一个 clone 方法, 通过该方法进行对象的拷贝, Java提供了一个Cloneable接口来标识这个对象…

课堂笔记——Data Mining(1)

一、Introduction …… 1、Major Issues in Data Mining User Interaction Presentation and visualization of data mining results : Efficiency and Scalability Diversity of data types: complex types of data; Mining dynamic, networked, and global data reposit…

23种设计模式之代理模式

代理模式的定义 代理模式是一个使用率非常高的模式,其定义为: 为其他对象提供一种代理以控制对这个对象的访问 代理模式也叫做委托模式, 它是一项基本设计技巧. 许多其他的模式, 如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式, 而且在日常的应用中,…

论文翻译——FingerSound:Recognizing unistroke thumb gestures using a ring

1. INTRODUCTION 可穿戴计算已经发展到相当大的消费市场,近年来已经有了大量的应用。可穿戴设备 - 最突出的智能手表和屏幕带,以及Oculus Rift等移动虚拟现实设备 - 现在可以被视为商品硬件,大部分人口在日常生活中使用它们。随着这种普及&am…