软件设计原则 之一:依赖倒转原则 DIP
依赖倒转原则(Dependency Inversion Principle)讲的是:要依赖于抽象,不要依赖于具体。
依赖倒转原则的一种表述是:细节应当依赖于抽象,抽象不应当依赖于细节。
另一种描述是:要针对接口编程,不要针对实现编程。意思就是应当使用接口和抽象类而不是具体类进行变量的类型声明、参数的类型声明、方法的返回类型声明以及数据类型的转换等。要保证这一点,一个具体java类应当只实现java接口和抽象java类中声明过的方法,而不应当给出多余的方法。
java接口与java抽象类的区别:
1.java抽象类可以提供某些方法的部分实现,而java接口不可以。
2.一个抽象类的实现只能由这个抽象类的子类给出,一个类最多只能从一个超类继承。任何一个实现了一个java接口所规定的方法的类都可以具有这个接口的类型,一个类可以实现任意多个java接口。
3.从代码重构的角度来说,使用重构接口比重构抽象类要容易多。
4.java接口是定义混合类型(Mixin Type)的理想工具。所谓混合类型,就是一个类的主类型之外的次要类型。
缺省适配模式
声明类型的工作仍然是由java接口承担的,但是同时给出的还有一个java抽象类,为这个接口给出一个缺省实现。其他同属于这个抽象类型的具体类可以选择实现这个java接口,也可以选择继承自这个抽象类。
依赖倒转原则假定所有的具体类都是会变化的,这也不总是正确的。有一些具体类可能是相当稳定的、不会发生变化的,客户端可以直接依赖于这些具体类型,而不必为此声明一个抽象类型。
分享到:
相关推荐
依赖倒转原则(Dependency Inversion Principle,DIP)是面向对象设计的基本原则之一,它在软件工程中扮演着至关重要的角色。这个原则主要是为了降低模块之间的耦合度,提高系统的可扩展性和可维护性。在C#编程语言...
依赖倒转原则(Dependency Inversion Principle,简称DIP)是软件设计中的一个重要原则,它属于SOLID设计原则之一。这个原则由Robert C. Martin在1994年提出,其核心思想是“高层模块不应该依赖于低层模块,两者都...
依赖倒转原则(Dependency Inversion Principle,简称DIP)是软件设计中的一个重要原则,它在面向对象编程领域具有深远的影响。这一原则的核心思想是“高层模块不应该依赖于低层模块,两者都应该依赖于抽象”。简单...
依赖倒置原则(Dependence Inversion Principle,简称DIP)这个名字看着有点别扭,“依赖”还“倒置”,这到底是什么意思?依赖倒置原则的原始定义是:High level modules should not depend upon low level modules...
依赖倒置原则(Dependency Inversion Principle,DIP)是面向对象设计的基本原则之一,由罗伯特·C·马丁(Robert C. Martin)提出。这个原则指出,高层次的模块不应该依赖于低层次的模块,两者都应该依赖其抽象;...
依赖倒转原则告诉我们,在软件设计中,高层模块和低层模块都应该依赖于抽象接口,而不是相互依赖。 5. 接口隔离原则(ISP):使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。...
3. **依赖倒转原则 (Dependency Inversion Principle, DIP)**:这一原则建议高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象。在示例中,所有形状类(Circle、Rectangle、Triangle)都实现了Shape接口...
本文将详细探讨六种核心的设计原则,它们分别是开闭原则(Open-Closed Principle, OCP)、里氏代换原则(Liskov Substitution Principle, LSP)、迪米特法则(Law of Demeter, LoD)、依赖倒转原则(Dependency ...
5. **依赖倒转原则**:依赖倒转原则(DIP)指出要依赖于抽象,不要依赖于具体实现,即针对接口编程,而不是针对实现编程(选D)。 6. **复用关系**:在设计模式中,优先考虑利用的是委托、继承和创建这三种复用关系...
3. 依赖倒转原则(DIP):依赖倒转原则提倡依赖于抽象接口而非具体实现,这样可以更灵活地调整系统结构,降低对具体类的依赖。 这些原则和模式共同构成了软件设计的基础,通过遵循它们,我们可以创建出更健壮、易于...
4. **依赖倒转原则 (Dependency Inversion Principle, DIP)**: 依赖倒转原则提倡高层次的模块不应依赖于低层次的模块,两者都应依赖于抽象。这样,系统可以通过调整抽象层来适应变化,而无需更改大量具体实现代码...
#### 依赖倒转原则 (DIP) 依赖倒转原则强调了高层模块不应该依赖于低层模块,两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。这通常通过接口或抽象类来实现。例如,如果有一个“图形绘制器”...
依赖倒转原则 依赖倒转原则概述 依赖倒转原则(Dependency Inversion Principle, DIP)强调要依赖于抽象,而不是依赖于具体实现。这意味着高层次的模块不应该依赖于低层次的模块,两者都应该依赖于相同的抽象。 ...
3. **依赖倒转原则**(Dependency Inversion Principle, DIP):高层模块不应该依赖低层模块,两者都应该依赖其抽象。这意味着我们应该依赖接口或抽象类,而不是具体的实现。这有助于降低模块间的耦合度。 4. **...
- 依赖倒转原则在实际中可能需要结合工厂模式等设计模式来实现。 #### 4. 接口分离原则 (Interface Segregation Principle, ISP) 接口分离原则指出,客户端不应该被迫依赖它不使用的方法。也就是说,接口应该足够...
依赖倒转原则(DIP):要依赖于抽象,不要依赖于具体。 接口隔离原则(ISP):使用多个专门的接口比使用单一的总接口要好。 合成/聚合复用原则(CARP):要尽量使用合成/聚合,尽量不要使用继承。 迪米特法则(LoD):一...
3. **依赖倒转原则(DIP)**:高阶模块不应该依赖于低阶模块,两者都应该依赖于抽象。这使得代码更加灵活,因为具体的实现可以被替换而不影响高层模块。 4. **里氏替换原则(LSP)**:子类型必须能够替换掉它们的基...
4. 依赖倒转原则(DIP):高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 5. 迪米特法则(LOD):一个对象应当对其他对象有尽可能少的了解。 6. 接口隔离原则(ISP):应当为客户端提供尽可能小的单独的接口...