fishGUI:迭代器模式一------单链表和双链表的设计

来源:互联网 发布:农村淘宝合伙人面试题 编辑:程序博客网 时间:2024/05/14 04:30

问题:

屏幕类和窗口类都能容纳其他的对象,因此在面向对象设计阶段为它们设计了一个公共的基类---容器类。这样如果要实现保存多个对象的机制可以在容器类中直接使用双向链表,代码的复用性就大幅提高了。但是如何具体地实现这种方案,并且尽可能复合面向对象原则并且可复用性最大化?

实现方案一:


问题:管理链表的数据结构分散在两个类中而且还要通过共有数据成员的方式把一个类中的内部信息暴露给另一给类,违反了面向对象的封装原则;有可能需要实现的是单项链表而不是双向链表

实现方案二:模仿STL中的链表

双向链表的设计:


个人感觉在类FG_BList——Node中使用指针保存对象不是很通用的做法,因为如果程序员需要的时候,可以直接传递类的指针形式,但是考虑作者实现的具体环境也是可以的

链表类并不能假定这些指针所指对象的控件分配方式,所以它只负责维护链表结构并在其中保管对象指针而不负责对象空间的创建和释放,相关的创建和删除操作应该由使用链表的客户类负责

单项链表的设计:


问题:想通用的find,print等对链表操作的算法在双向和单向链表中都有定义,但是这些算法的实现基本相同,唯一的差别只在于遍历链表时的具体操作

接下一篇迭代器的设计


0 0
原创粉丝点击