Composite(组合)模式

Composite(组合)模式

ID:37856450

大小:70.50 KB

页数:6页

时间:2019-06-01

Composite(组合)模式_第1页
Composite(组合)模式_第2页
Composite(组合)模式_第3页
Composite(组合)模式_第4页
Composite(组合)模式_第5页
资源描述:

《Composite(组合)模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、设计模式----Composite(组合)模式 GoF:将对象组合合成树形结构以表示“部分--整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性。 组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。可以用牵一动百来形容。 Composite模式描述了并实现了树形目录结构,在该模式中要有一个组合体,它是一个抽象类或接口(Component),组合体中定义足够多的

2、方法。当组合体(Component)一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。 在Composite模式中要用到Iterator(迭代器)模式和ChainofResponsibility(职责链)模式。这两个模式我还没有学到,但是Java中的Iterator我用过。暂时先将Composite模式实现。 以组装电脑为例,首先需要一个组合体:packageComposite; importjava.util.Iterato

3、r; publicabstractclassEquipmentComponent{StringE_name;publicStringgetName(){returnE_name;}//endgetName(...)publicvoidsetName(StringstrName){this.E_name=strName;}//endsetName(...)publicdoublegetPrice(inteNumber,doubleprice){doubleequipmentPrice=0;equipmen

4、tPrice=eNumber*price;returnequipmentPrice;}//endgetPrice()publicabstractdoubleequipmentPrice(inteNumber,doubleprice);publicbooleanadd(EquipmentComponenteq){returnfalse;}//endadd(...)publicbooleanremove(EquipmentComponenteq){returnfalse;}//endremove(...)p

5、ublicIteratoriter(){returnnull;}//enditer()}//endabstractclassEquipmentComponent 接着我们实现一个软盘的类:packageComposite; publicclassFloppyDiskextendsEquipmentComponent{publicFloppyDisk(){//dosomething....}//endFloppyDisk()publicdoubleequipmentPrice(inteNumber,dou

6、bleprice){doubleequipmentPrice=getPrice(eNumber,price);returnequipmentPrice;}//endequipmentPrice()}//endclassFloppyDisk 下面实现Composite类:packageComposite; importjava.util.ArrayList;importjava.util.Iterator; publicclassEquipmentCompositeextendsEquipmentComp

7、onent{/**CreatesanewinstanceofEquipmentComposite*/publicEquipmentComposite(){//dosomething....}//endEquipmentComposite()privateArrayListequipment=newArrayList();publicdoubleequipmentPrice(inteNumber,doubleprice){doubleequipmentPrice=0;IteratoreIter=equip

8、ment.iterator();while(eIter.hasNext())equipmentPrice+=((EquipmentComponent)eIter.next()).getPrice(eNumber,price);returnequipmentPrice;}//endequipmentPrice(...)publicbooleanadd(EquipmentComponenteqc){booleanaddBool=equipmen

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。