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

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

2.2 使用抽象思维设计接口

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

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

现在,抽象和重用的联系在哪里?请你自问这两个场景哪个更具重用性,是抽象的还是非抽象的?我们来更进一步简化问题,以下哪个短语更具重用性?是“送我去机场”还是“右转,右转,然后再左转,左转,左转”。显而易见,第一个短语更具重用性。你可以在任何城市中使用它,只要你钻进一个出租车并且想去机场。第二个短语只在特定的情况下可行。因此,抽象接口“送我去机场”更具通用性。可重用的面向对象设计针对芝加哥、纽约或克利夫兰市的实现是不同的。

时间: 2024-08-29 16:06:10

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

《VMware vSphere设计(原书第2版)》——1.4 设计流程

1.4 设计流程 既然已经讨论了设计的三个层面和5个基本原则,那么是时候介绍设计流程了.本节将介绍如何进行VMware vSphere设计,其中要完成哪些任务,以及要完成这些任务需要使用什么工具. 我们在前面提到过,vSphere设计最重要的就是功能需求.那么从功能需求开始介绍设计流程. 1.4.1 收集并定义功能需求 功能需求是vSphere设计的基础和驱动力.大多数设计决策都是基于或者受制于功能需求的,因此在收集和定义功能需求阶段,应该尽可能实现功能需求的全面性和完整性. 很多时候,有些功能

《VMware vSphere设计(原书第2版)》——1.3 设计原则

1.3 设计原则 本节介绍设计的基本原则,即为了满足功能需求,我们在每个层面(技术.组织和运维)进行决策时需要参考的一些指导性观点.概括地讲,vSphere 设计有5个基本原则:可用性(availability).可管理性(manageability).性能(performance).可恢复性(recoverability).安全性(security).随后,我们会用AMPRS这个缩略语来指代上述5个基本原则.这些原则大体上都可以顾名思义,无需多加解释,但我们还会逐个详细介绍. 1.3.1 可用

《Java语言导学(原书第6版)》一一2.4 接口

2.4 接口如前所述,对象通过方法与外界交互,也就是说,方法是对象与外界的接口.例如,电视机控制面板上的按钮就是观众与电视机盒内电路的接口.观众可以通过电源键来开关电视机.绝大多数情况下,接口被定义为一组方法体为空的相关方法的集合.如果将自行车的行为定义成接口,其形式如下: 实现该接口时,要更换类名(例如,可以改成某个品牌的自行车,如ACMEBicycle),并在类声明中使用关键字implements: 通过实现接口,类可以更形式化地定义行为.接口构成了类与外界的契约,而且该契约在构建程序时由编

《社交网站界面设计(原书第2版)》——1.13 设计明显的交互

1.13 设计明显的交互 我们开始查看其他能识别设备之间物理关系的早期实验.例如,通过将Misfit Shine健身追踪器放在触摸屏上,你就可以将其与手机同步.电波开始慢慢地从Shine中辐射出,你可以看到数据通过屏幕渗入,就像是魔术一样.至少看起来是这样的.和所有魔术一样,这其实是声东击西.它与屏幕无关--它其实是通过蓝牙进行无线同步.这种迷人的交互是一个设计缺陷的结果.Shine可爱的金属壳干扰了无线信号,设计师发现只有将Shine拿到手机旁边才可以同步.作为一种无线同步,它就好像是没有完成

《面向对象的思考过程(原书第4版)》一1.1 基本概念

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第1章,第1.1节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著 1.1 基本概念 本书主要目标是让你学会思考如何将面向对象概念应用于面向对象的系统设计中.历史上定义面向对象的语言拥有以下特点:封装(encapsulation).继承(inheritance)和多态(polymorphism).因此,如果设计一门语言时没有完全实现以上特性,那么通常我们认为该语言不是完全面向对象的.即使实现了这三点,我也往往会加入组

《面向对象的思考过程(原书第4版)》一3.5 多重继承

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第3章,第3.5节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 3.5 多重继承 第7章会讲述有关继承的更多细节.然而,这里很适合讨论多重继承.多重继承是类设计中最强大也最具挑战的一个方面. 顾名思义,多重继承允许一个类继承自多个类.实际看起来这是个好主意.对象都应该模拟现实世界,不是吗?现实世界中存在很多多重继承的例子.父母是多重继承的

《面向对象的思考过程(原书第4版)》一 第3章 高级的面向对象概念

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第3章,第3.1节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 第3章 高级的面向对象概念 第1章和第2章讲述了面向对象的基本概念.在开始学习关于构建面向对象系统的一些具体设计问题之前,我们需要更进一步了解面向对象的一些概念,比如构造函数.操作符重载以及多重继承.我们也会讲述错误处理技术以及面向对象的设计中作用域的重要性.其中一些概念可能

《面向对象的思考过程(原书第4版)》一1.3 过程式编程与面向对象编程

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第1章,第1.3节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 1.3 过程式编程与面向对象编程 在我们深入了解面向对象开发的优势之前,先考虑一个更基本的问题:究竟什么是对象?这既是一个复杂的问题,也是一个简单的问题.它复杂是因为学习任何一种软件开发方法论都非易事.它简单是因为人们已经在按对象的方式进行思考.例如,当你看到一个人,你会把他

《面向对象的思考过程(原书第4版)》一1.6 究竟什么是类

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第1章,第1.6节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 1.6 究竟什么是类 简单地说,类是对象的蓝图.当你实例化一个对象时,你基于类来构建这个对象.事实上,尝试解释类和对象实际上是一个先有鸡还是先有蛋的问题.描述类时不使用术语对象是非常困难的,反之亦然.例如,个人自行车是一个对象.然而,有人已经创建了蓝图(就是类)来建造这个自行

《面向对象的思考过程(原书第4版)》一1.10 多态

本节书摘来自华章出版社<面向对象的思考过程(原书第4版)>一书中的第1章,第1.10节,[美] 马特·魏斯费尔德(Matt Weisfeld) 著黄博文 译更多章节内容可以访问"华章计算机"公众号查看. 1.10 多态 多态是一个希腊词,字面上理解为许多形状.尽管多态与继承是紧耦合的关系,但它通常单独作为面向对象技术中最强大的优点之一.当向一个对象发送一个消息时,该对象必须定义一个方法来响应这个消息.在继承体系图中,所有的子类从它们的超类中继承接口.然而,由于每个子类是单独