August 2021
Intermediate to advanced
450 pages
4h 46m
Chinese
正如第1章中所示,构建健壮的面向对象设计的关键之一是理解接口和实现之间的不同。因此,当设计类时,应该向用户暴露什么,隐藏什么是非常重要的。而封装与生俱来的数据隐藏机制可以对用户隐藏不必要的数据。
小心
不要混淆接口与图形化用户接口(Graphical User Interface,GUI)这两个概念。虽然GUI名称中包含了interface这个单词,但是我们所说的接口是一种更通用的术语,它并不局限于图形化接口。
还记得第1章中的烤面包机例子吗?烤面包机(或相似功能的设备)需要插入一个接口,即电源插座,如图2.1所示。所有需要电的设备都需要遵从正确的接口,即电源插座。烤面包机不需要知道插座的任何实现,或者电是如何产生的。对所有烤面包机而言,它不关心电是燃煤电厂还是核电站生产的,只关心具体接口可以正确安全地工作就行。
图2.1 再访发电厂
还有一个汽车的例子。司机和汽车之间具有很多接口,比如方向盘、油门踏板、刹车和点火开关。先抛开美观问题,大多数人开车时主要关注的点是启动、加速、停止、转向等,很少有人关心那些眼睛看不到的组件(实现)。事实上,大多数人根本就无法识别某些组件,比如催化转化器和垫圈。然而,任何司机都必须清楚如何使用方向盘,因为这是一个通用接口。制造厂商会为车安装一个标准的方向盘,确保市场上的目标客户都能够使用这个系统。
然而,如果制造厂商决定安装一个操纵杆来代替方向盘,大多数司机都会不习惯,那么这个车型销量不会很广(只能博得一些喜欢打破常规的人的喜爱)。而如果制造厂商替换了汽车的引擎(改变了部分实现),只要没有改变性能和外观,大多数司机都不会注意到。 ...
Read now
Unlock full access