抽象是对象的最简化的接口,他向客户提供了所期望的服务。理解抽象的关键,在于接口,抽象是对象接口的抽象,对于特定的对象,抽象就是一个明确的接口,对于电话,按钮就是他的接口(抽象)。
用好抽象的关键在于对所研究问题的深刻理解。设计的比较好的抽象可以把说明从实现中分离出来,通过提供必备的信息,隐藏起实现的细节,让客户以较为安全和客预测的方式使用对象,同时通过降低复杂性,以简单接口的方式降低学习难度,提高学习效率。
好的抽象,应该使客户打消“偷窥”的念头(不过总是有些人想方设法去窥视具体的实现),按照抽象编程,使得最终的客户代码更加的简单、安全和稳定,在这方面,标准程序库和各种准标准程序库做得最为出色。
一个好的抽象必须提供明确的、完整的、易于理解的说明,依赖抽象编程,实际上就是依赖这些说明进行编程,他比依赖实现编程有很大的优势:
1、阅读说明比阅读源代码容易得多,时间节省了很多,也更容易理解。
2、通过说明的完整性(例如先置条件、后置条件、适用范围等),我们可以很清楚的了解一个类的完整性。
3、通过说明,我们的接口具有更大的弹性和可扩展性(例如我们可以采用更加有效的方法实现sort接口)。
4、规定接口必须有说明,把那些没有相应说明的接口定义为错误,使得类的维护更加容易。
一个好的说明应该是规定接口必须提供的服务,必须完成的任务,而不是已经做过的事情。