一、疑惑
我发现当对某个词语有了概念认识后,但当这个词在其它文章代表的是另一个意义的,对这篇文章的理解就会很难,因为你会用原来的概念来理解,就会发现感觉不是那么会事,所以想理解这篇文章,得暂时把对这个词原来的意义放下,而按这篇文章的意义来读。
这是我们第6章时的困扰,从上一节的ADT,到这节的类接口。
这里所谓的【类接口】不是指编程语言上的【接口类】,而是指类公开给外部能使用的方法或属性。在读整节时,对接口的意义都是这个,而不要想到是编程语言的接口类,不然会影响对相关内容的理解或都直接理解 错了。
二、抽象和接口
抽象是一种以简化方式来看待复杂的能力
通过接口展现合理的抽象,并确保细节仍被隐藏在抽象背后。
类的接口为隐藏在其后的具体实现提供了一种抽象,应能提供一组明显相关的子程序。
一个没有经过良好抽象的类可能会包含有大量混杂的函数,需要对它进行清理,把原有的一些子程序转移到其它更合适的类,把一些转移到其它子程中。
三、针对接口编程,而不是针对实现编程
这句话的意思是说我们在使用其它类时,只需要从类的接口(公共方法或属性)就能清楚知道该怎么使用这个类进行编程,而不用深入类的内部实现细节,才知道该怎么调用方法。说明了类的接口抽象封装的重要性。
四、创建优秀类的抽象接口指导建议
- 类的接口应该展现一致的抽象层次
- 一定要理解类所实现的抽象是什么
- 提供成对服务
- 把不相关的信息转移到其它类中
- 尽可能让接口可编程,而不是表达语义
- 谨防在修改时破坏接口的抽象
- 不要添加与接口抽象不一致的公用成员
- 同时考虑抽象性和内聚性