基于接口而非实现编程(基于抽象而非实现编程)的目的是解耦。
这里面接口的含义可以理解为 dll 或者 so 文件对应的头文件中提供的函数列表,或者理解为C++中的抽象类。
该原则可以将接口和实现分离,对外暴露稳定的接口、屏蔽不稳定的实现以及各种实现细节。当实现改变时,上层开发者可以不用修改代码,这样完成了解耦,提高代码质量。
那如何实现上述原则呢?有以下三点:
- 函数的命名不能暴露任何实现细节。
- 封装具体的实现细节。
- 为实现类定义抽象的接口。
总之,不要让上层调用者知道任何实现的细节。
(SAW:Game Over!)