第六章是讲如何创建高质量的类。首先作者介绍了一下抽象数据类型ADT(Abstract Data Type)。一个ADT就是一些数据和对这些数据的操作的一个集合。在面向对象的程序语言中,可以用一个类来实现。当然,类比ADT多一些东西,像继承,多态等。面向对象的语言也会自动支持多个实例,用起来很方便。若是非面向对象的语言,那么实现ADT就要多考虑一下了。若是有多个实例,可能要在ADT的操作中增加一个ID来区别;或是每次都把数据准备好,显式的传给ADT的操作函数;或者增加SetCurrentInstance之类的函数来设置当前需要操作的实例。总之复杂一些,要根据具体情况考虑所用的方法。
对一个类来说,我们关注最多的毫无疑问是它的接口。那么要怎么样才能设计出好的接口呢?说来其实也还是抽象和封装。抽象和封装这两者相互影响,一般来说,要么两者都好,要么都不好。
抽象
先说抽象。抽象接口就是要提供用户需要的东西。
- 要搞清楚这个类是干什么的,提供正好这个类需要提供的那些接口,不是越多越好。比如一个类Employee,里面可能是用一个链表来管理的,那么那些处理链表的函数就不需要暴露,因为对于使用这个类的人来说,他不需要知道里面是用链表管理的还是数组管理的。
- 要提供一致性的接口,层次要清晰,像类Employee,对外的接口里面可以有AddEmployee,RemoveEmployee,不要有什么FirstItem&