您的位置:首页 > 编程语言 > Java开发

设计模式之组合模式,component

2013-11-29 18:14 162 查看
package liu.composite.demo;
public abstract class Component {
 public String name;

 public Component(String name){

  this.name = name;

 }

 public Component(){

  

 }

 

 public abstract void add(Component c);

 public abstract void remove(Component c);

 public abstract void display(int depth);

}

-----------------------------

package liu.composite.demo;
import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;
public class Composite extends Component {
 public Composite(String name){

  super(name);

 }

 

 private List<Component> children = new ArrayList<Component>();

 @Override

 public void add(Component c) {

  children.add(c);

  

 }
 @Override

 public void remove(Component c) {

  children.remove(c);

  

 }
 @Override

 public void display(int depth) {

  for(int i = 0 ;i<depth;i++)

   System.out.print("-");

  System.out.println(name);

  

  for(Iterator tmp = children.iterator();tmp.hasNext();){

   ((Component) tmp.next()).display(depth+2);

   //System.out.println();

  }

  

 }
}

---------------------------

package liu.composite.demo;
public class Leaf extends Component {
 public Leaf(String name){

  super(name);

 }

 @Override

 public void add(Component c) {

  System.out.println("can not add to a leaf");

  

 }
 @Override

 public void remove(Component c) {

  System.out.println("can remove from a leaf");

  

 }
 @Override

 public void display(int depth) {

  for(int i = 0 ;i<depth;i++)

   System.out.print("-");

  System.out.println(name);

  

 }
}

----------------------------------

package liu.composite.demo;
public class Main {
 public static void main(String[] args) {

  Composite root = new Composite("root");

  root.add(new Leaf("Leaf A"));

  root.add(new Leaf("Leaf B"));

  
  Composite comp = new Composite("Composite x");

  comp.add(new Leaf("Leaf XA"));

  comp.add(new Leaf("Leaf XB"));

  root.add(comp);

  

  Composite comp2 = new Composite("Composite xy");

  comp2.add(new Leaf("Leaf XYA"));

  comp2.add(new Leaf("Leaf XYB"));

  comp.add(comp2);

  root.add(new Leaf("Leaf C"));

  Leaf leaf = new Leaf("Leaf D");

  root.add(leaf);

  root.remove(leaf);

  root.display(1);

  

 }
}

 


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 设计模式