`
ITCheng
  • 浏览: 76811 次
  • 来自: 北京
社区版块
存档分类
最新评论

面向对象的设计原则_针对接口编程

OO 
阅读更多

接口

  • 接口是一个对象中可以被另一个对象调用的一组方法
  • 一个对象可以有多个接口
  • 类型是一个对象的特殊接口
  • 不同的对象可以有相同的类型,一个对象可以有多种不同的类型
  • 一个对象只有通过它的接口才能被其他对象知晓
  • 接口是可插拔的关键

实现继承和接口继承

  • 实现继承(类继承)------ 一个对象的实现定义在另一个对象的实现的基础上
  • 接口继承 ------ 描述了一个对象什么时候可以代替另一个对象使用
  • Java为接口继承提供了专用的结构 - interface
  • Java的接口结构使专注于对象接口的设计更容易实现

接口的优缺点

  • 优点
    • 客户端不知道他们所使用对象的具体类型
    • 一个对象可以被另一个对象轻易地替换
    • 对象不需要硬连接到一个特殊类的对象,因此增加了灵活性
    • 松耦合
    • 增加了重用的机会
    • 增加了组合的机会,因为被包含的对象可以被实现了特定接口的其他对象替换
  • 缺点
    • 某种程度上增加了设计的复杂性

接口实例

Java代码 复制代码 收藏代码
  1. /**  
  2. * Interface IManeuverable provides the specification  
  3. * for a maneuverable vehicle.  
  4. */  
  5. public interface IManeuverable {   
  6.     public void left();   
  7.   
  8.     public void right();   
  9.   
  10.     public void forward();   
  11.   
  12.     public void reverse();   
  13.   
  14.     public void climb();   
  15.   
  16.     public void dive();   
  17.   
  18.     public void setSpeed(double speed);   
  19.   
  20.     public double getSpeed();   
  21. }   
  22.   
  23. public class Car implements IManeuverable {    
  24.     // Code here.    
  25. }   
  26.   
  27. public class Boat implements IManeuverable {    
  28.     // Code here.    
  29. }   
  30.   
  31. public class Submarine implements IManeuverable {    
  32.     // Code here.    
  33. }  
/**
* Interface IManeuverable provides the specification
* for a maneuverable vehicle.
*/
public interface IManeuverable {
	public void left();

	public void right();

	public void forward();

	public void reverse();

	public void climb();

	public void dive();

	public void setSpeed(double speed);

	public double getSpeed();
}

public class Car implements IManeuverable { 
	// Code here. 
}

public class Boat implements IManeuverable { 
	// Code here. 
}

public class Submarine implements IManeuverable { 
	// Code here. 
}

 

下面的方法只需要知道参数是机动车辆而不需要关心它到底属于哪个类(Car, Boat, Submarine)或者类所在的层次结构。

Java代码 复制代码 收藏代码
  1. public void travel(IManeuverable vehicle) {   
  2.     vehicle.setSpeed(35.0);   
  3.     vehicle.forward();   
  4.     vehicle.left();   
  5.     vehicle.climb();   
  6. }  
public void travel(IManeuverable vehicle) {
	vehicle.setSpeed(35.0);
	vehicle.forward();
	vehicle.left();
	vehicle.climb();
}

 

 

总结

使用该原则可以带来更灵活的设计,因为当我们想替换一个类的实现时,不需要改变原来的代码。

分享到:
评论

相关推荐

    C++设计模式课件2_面向对象设计原则.pdf

    8. **针对接口编程而非实现** - **原则阐述**:编程时应关注接口而非具体的实现细节。 - **实践意义**:这有助于减少系统内部的依赖关系,提高系统的整体性能和可维护性。 #### 设计原则的实际应用 - **设计习语...

    道法自然_道法自然-面向对象实践指南_项目_

    总的来说,《道法自然——面向对象实践指南》是一本理论与实践相结合的书籍,它不仅教授面向对象编程的基本原理,还强调了设计原则和模式在实际开发中的应用。通过跟随书中的项目过程,读者不仅能提升编程技能,还能...

    Java设计模式02面向对象设计原则

    依赖倒转原则提倡“针对接口编程,而不是针对实现编程”。这意在降低模块间的耦合度,使得软件组件更加独立,易于测试和替换。通过依赖于抽象而非具体实现,系统可以更灵活地适应变化,提高复用性。 **分析与实践**...

    面向对象设计原则

    最后,针对接口编程,而不是针对具体实现编程,这一原则强调了依赖于抽象而不是具体实现的重要性。这样做可以提高代码的灵活性,使系统更容易适应变化。 通过理解和实践这些面向对象设计原则,开发者可以编写出更...

    面向接口编程详解

    面向接口编程是一种重要的软件设计原则,它强调程序的组件应通过接口进行交互,而不是直接依赖于具体的实现。这种编程范式有助于提高代码的灵活性、可维护性和可测试性。下面我们将详细探讨面向接口编程的思想基础、...

    Java程序员应该了解的10个面向对象设计原则

    ### Java程序员应掌握的10个面向对象设计原则详解 #### 原则1:DRY(Don't Repeat Yourself) **定义与理解:** DRY原则的核心思想是避免重复代码,提高代码复用性。这一原则鼓励开发者通过抽象化公共功能来减少...

    东北大学_面向对象实验_GourmetCoffee

    总结,"东北大学_面向对象实验_GourmetCoffee"是一个结合理论与实践的教学活动,旨在帮助学生掌握面向对象编程的核心原则,理解如何在实际项目中运用这些原则,以及如何利用设计模式优化代码结构。通过这个实验,...

    Java面向对象设计原则.docx

    Java面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心。下面我们将详细介绍七大设计原则。 原则1: DRY(Don't repeat yourself) DRY原则,即不要写重复的代码,...

    面向对象分析与设计(第3版).pdf

    《面向对象分析与设计(第3版)》是一本专注于面向对象编程方法论的重要教材,尤其针对Java开发者提供了详尽的指导。本书通过深入浅出的方式,不仅阐述了面向对象的基本概念,如封装、继承、多态等,还探讨了如何将...

    设计模式可复用面向对象软件的基础(C++)——强烈推荐

    在面向对象编程中,设计模式提供了一种标准化的方法来处理常见的设计问题,从而提高代码的可读性、可维护性和复用性。本书《设计模式可复用面向对象软件的基础(C++)》是针对这一主题的深度探讨,特别适合C++开发者...

    也有面向对象设计原则.

    #### 原则2:针对接口编程,而非(接口的)实现 **接口** - 接口定义了一组方法签名,它们规定了对象之间的交互方式,而不需要指定具体的实现细节。 **实现继承和接口继承** - 实现继承是指类通过继承另一个类来...

    UML与面向对象程序设计

    面向对象原则包括封装变化、针对接口编程、多用组合、少用继承、要依赖抽象,不要依赖具体类等。这些原则可以指导开发人员正确地设计和实现面向对象系统。 在面向对象设计中,UML(Unified Modeling Language)是一种...

    面向对象设计课件(JAVA)

    面向对象设计还涉及类的设计原则,如单一职责原则(Single Responsibility Principle, SRP)、开闭原则(Open-Closed Principle, OCP)、里氏替换原则(Liskov Substitution Principle, LSP)、依赖倒置原则...

    面向对象设计模式与原则

    ### 面向对象设计模式与原则 #### 设计模式的概念与起源 设计模式是一种用于描述在特定场景下解决问题的方法论。它不仅提供了一种通用的解决方案,还为软件开发者们提供了一种共享语言,使得他们能够更有效地交流...

    设计模式中的面向对象原则及其子模式

    ### 设计模式中的面向对象原则及其子模式 #### 一、引言 随着软件系统规模的不断扩大和技术的迅速发展,如何提高软件的可复用性和灵活性成为了一个亟待解决的问题。面向对象技术作为一种有效的手段,已经在软件...

    面向对象的设计原则 doc

    - **针对接口编程**:尽量使用接口或者抽象类进行编程,而不是具体类。这样做的好处是,一旦具体实现发生变化,只需替换具体实现即可,而无需更改使用该接口的代码。 - **解耦**:依赖倒置原则能够降低各组件之间的...

    面向对象系统分析与设计.pdf

    面向对象分析(OOA)和面向对象设计(OOD)是软件工程中构建信息系统的常见方法,强调用面向对象编程语言在软件开发中构建模块化和可重用的代码。以下是关于该主题的知识点: 1. 面向对象的基本概念:面向对象编程...

    西工大面向对象实验答案代码

    【标题】"西工大面向对象实验答案代码"是一个针对西安工业大学面向对象编程课程的实验解答,主要涉及Java语言。这个资源包含了解决unit2的coffee作业问题和测试2的完整代码,据描述所述,这些代码是经过验证的,确保...

    C#面向对象设计模式纵横谈-0.面向对象设计模式与原则

    2. **面向对象设计原则**:包括单一职责原则(SRP)、开闭原则(OCP)、里氏替换原则(LSP)、依赖倒置原则(DIP)和接口隔离原则(ISP)。这些原则是良好面向对象设计的基础,有助于提升代码的可读性、可维护性和可扩展性。 ...

Global site tag (gtag.js) - Google Analytics