依赖倒置原则
(DIP)
核心内容:
1、高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
2、抽象不应该依赖于细节,细节应该依赖于抽象。
以
FishGUI
为实例,从实践的角度来看。假设
FishGUI
框架系统必须要移植到不同的操作系统(如:
Windows
和
Unix
),为了使操作系统的
变化不影响框架层,就必须抽象出一个操作系统适配器接口,
FishGUI
框架层中的类只依赖于该接口,而该接口的派生类具体实现到不同操作系统的调用。这个实现是符合依赖倒置原则的。
对应上图用代码去实现如下:
接口编写
(
对应上图中的标识
1)
package dip;
/**
* 定制一个播放flash功能接口
* @author renyy
*
*/
public interface IFlashPlay {
public void playFlash();
}
2
、在
windows
系统下实现播放
flash
的方式代码如下(对应上图中的标识
2
):
package dip;
/**
* 在windows下的flash播放器
* @author renyy
*
*/
public class WindowsFlashPlay implements IFlashPlay{
public void playFlash() {
System.out.println("windows flashplayer is working!");
}
}
在
unix
系统下实现播放
flash
的方式代码如下(对应上图中的标识
2
):
package dip;
/**
* 在unix下flash播放器
* @author renyy
*
*/
public class UnixFlashPlay implements IFlashPlay {
public void playFlash() {
System.out.println("unix flashplayer is working!");
}
}
使用方用户根据自己的情况所需实现
flash
播放的代码如下(对应上图中的标识
3
):
package dip;
/**
* 依赖倒置原则(DIP)
*
* 用户根据自己的需要去使用不同的flash播放器
*
* @author renyy
*
*/
public class UserFlashPlay implements IFlashPlay {
private IFlashPlay flash = new WindowsFlashPlay(); // 用户确定是用windows的flashplayer播放flash
// private IFlashPlay flashPlay = new
// UnixFlashPlay();//用户确定是用unix的flashplayer播放flash
public void playFlash() {
flash.playFlash();// 用户自己去决定我要用那种系统的播放方式。
// flashPlay.playFlash();
}
public static void main(String[] args) {
new UserFlashPlay().playFlash();
}
}
运行后输入:
windows flashplayer is working!
|
这样等用户发现自己需要在
unix
系统下播放
flash
时就可以用我们的
UnixFlashPlay
这个实现类提供的方法来在
unix
下播放
flash
,而设计者无须修改任何代码。
- 大小: 9.3 KB
分享到:
相关推荐
依赖倒置原则 (DIP) 依赖倒置原则强调依赖关系应该从高层模块流向低层模块,而不是相反。具体而言,高层模块不应该依赖于低层模块的具体实现,而应该依赖于抽象;低层模块则应该依赖于高层模块提供的抽象接口。...
2. 依赖倒置原则(DIP - Dependency Inversion Principle) 依赖倒置原则主张高层模块不应该依赖低层模块,两者都应该依赖其抽象。抽象不应该依赖细节,细节应该依赖抽象。这一原则说明了高层策略性的代码和低层细节...
以上介绍的五种面向对象设计原则——单一职责原则、里氏替换原则、依赖倒置原则、接口隔离原则和开闭原则,都是面向对象编程领域中非常重要的指导思想。遵循这些原则可以帮助开发者构建出更加健壮、可维护和易于扩展...
5. 依赖倒置原则(Dependency Inversion Principle, DIP):高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象。抽象不应该依赖于具体实现,而具体实现应该依赖于抽象。 接下来,我们来看看23种设计模式...
依赖倒置原则(Dependency Inversion Principle, DIP) **定义**:依赖倒置原则主张高层模块不应该依赖于低层模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。这意味着代码应当面向接口...
为了提高软件架构设计的质量,可以采用一些设计模式和原则,例如单一职责原则(SRP)、开闭原则(OCP)、依赖倒置原则(DIP)等。这些设计模式和原则可以帮助我们设计出一个更加灵活、可维护和可扩展的软件架构。 ...
第十一章 依赖倒置原则(DIP) 11.1 依赖倒置原则(DIP) 11.2 层次化 11.3 一个简单的例子 11.4 熔炉示例 11.5 结论 参考文献 第十二章 接口隔离原则(ISP) 12.1 接口污染 12.2 分离客户就是分离接口 12.3 接口...
2. **依赖倒置原则**(Dependency Inversion Principle,简称DIP):高层次的模块不应该依赖于低层次的模块,二者都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。这样可以降低模块间的耦合度,使得...
LSP)、接口隔离原则(Interface Segregation Principle, ISP)和依赖倒置原则(Dependency Inversion Principle, DIP)。这些原则旨在提供一种指导思路,帮助开发者创建出易于理解、扩展和维护的代码库。 单一...
依赖倒置原则(DIP) 高层模块(稳定)不应该依赖于低层模块(变化),二者都应该依赖于抽象(稳定) 。 抽象(稳定)不应该依赖于实现细节(变化) ,实现细节应该依赖于抽象(稳定)。 开放封闭原则(OCP) 对扩展开放,对更改...
第十一章 依赖倒置原则(DIP) 11.1 依赖倒置原则(DIP) 11.2 层次化 11.3 一个简单的例子 11.4 熔炉示例 11.5 结论 参考文献 第十二章 接口隔离原则(ISP) 12.1 接口污染 12.2 分离客户就是分离接口 12.3 接口...
5. 依赖倒置原则(Dependency Inversion Principle, DIP):高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。 超越面向对象: 随着编程语言和技术的发展...
SOLID原则是其中的核心,它包含了单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。这些原则指导开发者创建更稳定、可维护和易于扩展的代码。例如,单一职责...
面向对象设计原则是软件开发的基础,包括单一职责原则(SRP)、开放封闭原则(OCP)、里氏替换原则(LSP)、接口隔离原则(ISP)和依赖倒置原则(DIP)。实验旨在理解和应用这些原则,通过实际案例分析如何在代码中...
LISKOV替换原则 第11章 DIP:依赖倒置原则 第12章 ISP:接口隔离原则 第13章 写给C#程序员的UML概述 第14章 使用UML 第15章 状态图 第16章 对象图 第17章 用例 第18章 顺序图 第19章 类图 第20章 咖啡的启示 第三...
22.S.O.L.I.D五大原则之依赖倒置原则DIP 23.JavaScript与DOM(上)——也适用于新手 24.JavaScript与DOM(下) 25.设计模式之单例模式 26.设计模式之构造函数模式 27.设计模式之建造者模式 28.设计模式之工厂模式 29...
我才意识到这个灯的设计有问题——它的开关是换不了的。一面给用户解释,一面考虑着把灯和开关分开。咱也是学过设计模式的人,知道要面向接口编程,绝不应该简单地把Light类拆解成Light和Switcher两个类。因为...