标签:
一.组合模式简介
把整体和部分的关系用树形结构表示,从而可以统一处理。
二.组合模式实现细节
1)抽象构建:定义叶子和容器的共同特点。
2)叶子:没有子节点
3)容器:有容器的特征,可以包含子节点(一般实现的时候在这里添加容器存放子节点)
三.简单代码实现
package com.lz.combination; import java.util.ArrayList; import java.util.List; /* * 抽象构建 */ public interface IComponent { void op(); } /* * 叶子构件 */ interface ILeaf extends IComponent { @Override public void op(); } /* * 容器构件 */ interface IComposite extends IComponent { @Override public void op(); } class Leaf implements ILeaf { private String name; public Leaf(String name) { super(); this.name = name; } @Override public void op() { System.out.println("查杀"+this.name+"文件"); } } /* * 容器实现类中包含存放子节点 */ class Composite implements IComposite { private String name; public Composite(String name) { super(); this.name = name; } List<IComponent> list = new ArrayList<IComponent>(); public void add(IComponent i) { list.add(i); } public void delete(int index) { list.remove(index); } public IComponent get(int index) { return list.get(index); } @Override public void op() { System.out.println("查杀"+this.name+"目录"); for ( IComponent i : list) { i.op(); } } }
package com.lz.combination; /* * 组合模式测试类 */ public class Test { public static void main(String[] args) { Leaf l1 = new Leaf("文件1"); Leaf l2 = new Leaf("文件2"); Leaf l3 = new Leaf("文件3"); Leaf l4 = new Leaf("文件4"); Leaf l5 = new Leaf("文件5"); Leaf l6 = new Leaf("文件6"); Composite c1 = new Composite("目录1"); Composite c2 = new Composite("目录2"); c2.add(l4); c2.add(l5); c2.add(l6); c1.add(l1); c1.add(l2); c1.add(l3); c1.add(c2); c1.op(); } }
四.应用场景
1)操作系统的资源管理器
2)OA系统中组织结构
3)junit单元测试框架
标签:
原文地址:http://www.cnblogs.com/larobyo/p/5327239.html