设计模式中结构型模式(三)组合模式(Composite)
意图:将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个
对象和组合对象的使用具有一致性。
以下情况使用Composite模式
你想表示对象的部分-整体层次结构
你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。
部分示例代码:
这部分内容由于有迭代器夹在中间,感觉有一定难度,难度不在于如何实现迭代器,而在于如何补齐对应的迭代器,使其能够满足程序的测试要求。
既使这样,程序还是稍微有点与书中不同,原因是书中的代码我想破脑袋也无法实现,猜测可能是写错了。
另外,其中有一个头文件是引用BasicClass.h中的,这里面包含了关于List表的部分实现,及其相关ListIterator的实现,在对应的文件中已作了修改(链接:http://blog.****.net/luhouxiang/archive/2008/04/17/2301849.aspx)。需要可到相关页面更新。
到今天,组合模式终于基本了结。
以下为相关类的类图:
代码描述的是一组计算机结构。大体如下:机箱(Cabinet),主板(chassis),总线(bus),磁盘(FloppyDisk),
总线下的各种板卡(Card),程序采用树形结构将这些零件组合成一个计算机,最后给出计算整个机器的价钱的方法。
以下为整个计算机的组成结构,和类图稍有不同
Cabinet(机箱)
|
chassis(主板)
| |
bus(总线) FloppyDisk(磁盘)
|
Card(板卡)
图形从上往下读,机箱下面是主板,主板下包含总线和磁盘,总线下包含板卡
代码部分详细描述了计算机组成的树形结构的表示方法,并利用这种树形结构计算各部件的价钱总数: