《面向对象的思考过程(原书第4版)》一2.2 使用抽象思维设计接口

简介: 面向对象编程的主要优势之一是可以重用类。通常可以重用的类比具体的类的接口更加抽象。具体的接口可以是非常明确的,而抽象接口则更通用。简单来说,高层次的抽象接口比高度具体的接口更有用,大部分情况下如此,当然并非适用于所有情况。

本节书摘来自华章出版社《面向对象的思考过程(原书第4版)》一书中的第2章,第2.2节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.2 使用抽象思维设计接口

面向对象编程的主要优势之一是可以重用类。通常可以重用的类比具体的类的接口更加抽象。具体的接口可以是非常明确的,而抽象接口则更通用。简单来说,高层次的抽象接口比高度具体的接口更有用,大部分情况下如此,当然并非适用于所有情况。
完全可以编写一个非常有用的具体的类,而且这个类无法重用。这种情况经常出现,在某些情况下它也没什么错。然而,我们正在进行业务设计并且希望能得到面向对象提供的优势。所以我们的目标是设计抽象的可高度重用的类。为了做到这点,需要设计高度抽象的用户接口。我们可以创建一个出租车对象来演示抽象接口与具体接口的区别。该对象拥有一个诸如“送我去机场”接口可能比拥有一些独立的诸如“左转”、“右转”、“启动”、“停止”之类的接口更有用。因为正如图2-4所示,用户只想去机场。


2c4b7debe75de8be004a578f16d3b72794192fa7



当你从酒店出来时,把行李放到出租车后备厢,并坐上出租车,出租车司机会问你:“你想去哪里?”你回答:“请送我到机场。”(当然,这里假设这个城市只有一个机场。在芝加哥,你可能会说:“请送我到米德韦机场。”或者会说:“请送我到奥黑尔机场。”)。你可能自己都不知道如何到机场,甚至即使你知道,你也无须告诉司机什么时候转弯,转到哪个方向,如图2-5所示。作为乘客的你无需关心出租车司机的实际驾驶路径。(然而,如果司机故意绕路去机场,费用可能会有点问题。)

9b0ae1be7f026b47aade2852f3c4fcda3cdfd1f9



现在,抽象和重用的联系在哪里?请你自问这两个场景哪个更具重用性,是抽象的还是非抽象的?我们来更进一步简化问题,以下哪个短语更具重用性?是“送我去机场”还是“右转,右转,然后再左转,左转,左转”。显而易见,第一个短语更具重用性。你可以在任何城市中使用它,只要你钻进一个出租车并且想去机场。第二个短语只在特定的情况下可行。因此,抽象接口“送我去机场”更具通用性。可重用的面向对象设计针对芝加哥、纽约或克利夫兰市的实现是不同的。
相关文章
|
6月前
|
安全 Java 数据安全/隐私保护
|
6月前
针对抽象编程与对应的好处
针对抽象编程与对应的好处
48 1
|
网络协议 数据可视化 测试技术
面向对象分析与设计的底层逻辑
真正掌握了面向对象分析和设计的方法,也体会到其中的益处,对理解业务、方案设计、编码开发都有好处。
836 5
面向对象分析与设计的底层逻辑
|
程序员 数据安全/隐私保护 C++
C++面向对象封装特性的实例分析与应用扩展(一)
生活中充满复杂性,处理复杂性的方法之一就是简化和抽象。在计算中,为了根据信息与用户之间的接口来表示它,抽象是至关重要的。将问题的本质特征抽象出来,并根据特征来描述解决方案。抽象往往是用户定义类型的捷径,在C++中用户定义类型指的就是实现抽象接口的类设计。
127 1
C++面向对象封装特性的实例分析与应用扩展(一)
|
编译器 C语言 C++
C++面向对象封装特性的实例分析与应用扩展(二)
封装意义一: 在设计类的时候,属性和行为写在一起,表现事物 语法: class 类名{ 访问权限: 属性 / 行为 }; 示例1:设计一个圆类,求圆的周长
148 0
C++面向对象封装特性的实例分析与应用扩展(二)
|
设计模式
面向对象的设计原则最终篇(二)
关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则,依赖倒置原则而接下来我们要解释的就是最后的三种原则了,分别是接口隔离原则, 迪米特法则, 组合复用原则。
面向对象的设计原则最终篇(二)
|
设计模式 Java
面向对象的设计原则最终篇(一)
关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则,依赖倒置原则而接下来我们要解释的就是最后的三种原则了,分别是接口隔离原则, 迪米特法则, 组合复用原则。
面向对象的设计原则最终篇(一)
|
Java
编程之代码抽象三原则
编程之代码抽象三原则,这三原则仔细推敲,与23种设计模式不无关系。 23种设计模式,在此我不做详细介绍和说明,因为我目前也正在学习,在学习设计模式的时候,有一点非常重要, 引用王阳明先生的理念“知行合一”,将理论同实践集合起来,这样就不空中楼阁了。
1355 0
|
算法
《面向对象的思考过程(原书第4版)》一1.8.1 接口
我们可以看到接口定义了对象之间通信的基本手段。每个类设计接口规格来保证对象能被正确实例化和操作。必须向对象提供的接口发送消息来使用对象暴露的任何行为。接口需要完整描述类与类之间的交互。在大多数面向对象的语言中,访问修饰符指定为public的方法属于接口。
1070 0