标签:
组合模式


| /**  * 为组合中所有对象定义一个接口,不管是组合还是节点  * */ public abstract class Component {     public void add(Component component) {         new UnsupportedOperationException();     }     public void remove(Component component) {         new UnsupportedOperationException();     }     public String getName() {         return null;     }     public void foreach(){         new UnsupportedOperationException();     } } | 
| /**  * 子节点  * */ public class Leaf extends Component{     String name;     public Leaf(String name) {         this.name = name;     }     @Override     public void add(Component component) {         System.out.println("不存在子节点,无法添加。。。");     }     @Override     public void remove(Component component) {         new UnsupportedOperationException();     }     @Override     public String getName() {         return name;     } } | 
| /**  * 组合类  * */ public class Composite extends Component{     String name;     private List<Component> child = new ArrayList<Component>();     public Composite(String name) {         this.name = name;     }     @Override     public void add(Component component) {         child.add(component);     }     @Override     public void remove(Component component) {         child.remove(component);     }     @Override     public void foreach(){         for(Component component : child) {             System.out.println(component.getName());         }     }     @Override     public String getName() {         return name;     } } | 
| public class Client {     public static void main(String[] args) {         Component component = new Composite("根节点");         Component child = new Composite("一级子节点child");         Component child_1 = new Leaf("一级子节点child之子节点一");         Component child_2 = new Leaf("一级子节点child之子节点二");         child.add(child_1);         child.add(child_2);         Component child2 = new Composite("一级子节点child2");         component.add(child);         component.add(child2);         component.foreach();     } } | 
标签:
原文地址:http://www.cnblogs.com/LeslieXia/p/5494896.html