了解一个软件的设计可以从三个部分着手:模型、接口和实现。
这三者的关系就好比你去看代码,你会先去看有哪些类以及它们之间的关系,这就是看模型;然后你会打开一个具体的类,看它提供了哪些方法,这就相当于看接口;最后,你再来打开一个具体的方法,去看它的代码是怎么写的,这就是看实现。
以进程管理为例:进程管理的核心模型就包括进程模型和调度算法;它的接口就包括,进程的创建、销毁以及调度算法的触发等;不同调度算法就是一个个具体的实现。操作系统课程难以学习,很大程度上就在于,很多人没有搞清楚其中各个概念之间的关系。
即便层层展开到最后,到了一个具体类,甚至是一个具体的数据结构,我们依然可以按照模型、接口和实现这个结构来理解,比如很多 Java 面试题常问到的 HashMap:它的模型就是我们在数据结构中学习的 HashMap;它定义了一些接口,比如,get、put 等;它的实现原来是用标准的 HashMap 实现,后来则借鉴了红黑树。