[历史归档]本文原发布于 cstriker1407.info 个人博客,内容为历史存档,仅供参考。
发布时间:2013-12-17| 标题:设计模式学习笔记:组合模式|分类:编程 / 设计模式 / java |标签:设计模式·java·组合模式
设计模式学习笔记:组合模式
最近在看《设计模式之禅》这本书,收获良多,作者不愧是工作多年的大牛,将各种设计模式讲解的非常透彻。这里备份下书中的【 组合模式 】代码:
github:
【 https://github.com/cstriker1407/design_pattern 】
代码如下:
abstractclassCrop{privateStringname;privateList<Crop>cropList=newArrayList<Crop>();publicCrop(Stringname){super();this.name=name;}publicList<Crop>getCropList(){returncropList;}publicCropaddCrop(Cropcrop){this.cropList.add(crop);returnthis;}publicabstractStringoper();publicvoidinfo(){if(cropList.isEmpty()){System.out.println("No Crop, I am the leaf: "+name+" "+oper());}else{System.out.println("I Have childeren, I am: "+name+" "+oper());for(Cropcrop:cropList){crop.info();}}}}classLeafextendsCrop{publicLeaf(Stringname){super(name);}@OverridepublicStringoper(){return"LeafOper";}}classLeaderextendsCrop{publicLeader(Stringarg0){super(arg0);}@OverridepublicStringoper(){return"LeaderOper";}}测试代码:
publicclassCompositeTest{publicstaticvoidtest(){LeaderA01=newLeader("A01");LeaderA11=newLeader("A11");LeaderA12=newLeader("A12");LeafB13=newLeaf("B13");A01.addCrop(A11).addCrop(A12).addCrop(B13);LeafB21=newLeaf("B21");LeafB22=newLeaf("B22");LeafB23=newLeaf("B23");A11.addCrop(B21);A12.addCrop(B22).addCrop(B23);A01.info();}}