《C++面向对象高效编程(第2版)》——2.1 接口和实现的分离

    xiaoxiao2024-03-13  13

    本节书摘来自异步社区出版社《C++面向对象高效编程(第2版)》一书中的第章,第2.1节,作者: 【美】Kayshav Dattatri,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    2.1 接口和实现的分离

    C++面向对象高效编程(第2版)细心的读者可能已经注意到,在上一段中,我们使用了接口(interface)和实现(implementation)两个术语。传统的面向过程编程思想认为,接口和实现差异不大。但是在面向对象编程中,整个设计过程都围绕着接口进行。

    2.1.1 接口的含义

    通常,我们在现实中使用现有对象时,都会注意到眼前的事物。驾驶汽车时,看到的是不同的仪表盘(速度表、油料表、温度表)、方向盘、油门踏板等。当你踩下油门(也叫做节流阀或加速器)时,希望汽车移动(假设已挂挡,且手刹已松开),此时汽车内部发生了许多事情:

    (1)从油箱中向化油器(或者喷油器)中泵油。

    (2)化油器或喷油器将汽油送至发动机汽缸中。

    (3)配电器为火花塞供电,点燃燃料。

    (4)活塞带动曲轴,驱动车轮转动。

    如果密切关注以上这些细节会让驾驶员分心。把电喷式发动机换成化油器发动机,对于驾驶员而言意义不大,他希望的是汽车的各个操作环节流畅。另外,改变汽车内部燃料供给机制,也不会影响驾驶员的驾驶技术(或习惯)。

    当驾驶员查看速度表时,可以很容易地获知汽车的准确速度。至于速度表如何检测速度,与驾驶员毫不相关。顺带一提,速度表通过机械耦合机制或电子机械系统(电子和机械系统的结合)测量汽车的速度。

    通过以上分析,对驾驶员而言,真正重要的是她从外部看到或感觉到的事物,而不是它们在汽车内部如何运作。类对象的接口支持外部视图,接口就是用户观察的对象视图,以及用户可以用接口做什么(也包括接口对用户做什么)。因此从用户角度看,油门踏板控制汽车的速度,速度表显示汽车当前的速度。与此类似,用户将LD播放机看做是接受影碟并将编码图像再现至电视机屏幕上的装置。

    当我们设计接口时,应最大程度地满足用户的要求,这些用户也称为客户(client)。所谓类的客户,就是使用类且不知道(或不用关心)类内部运作的人。客户可创建类的对象,并通过接口对其进行操作。

    最新回复(0)