用我的方式讲述-设计模式之组合模式(composite)

composite是树形结构,那么我下面就用树的结构来写代码,希望对大家有所帮助 ======================================================================

 

//分支

public interface Brache {
 public void run();
}

 

======================================================================

 

//花
public class Flower implements Brache {
 public void run() {
  System.out.println("花儿怒放^_^");
 }
}

 

======================================================================

 

//叶子
public class Leaf implements Brache {
 public void run() {
  System.out.println("叶子长大了");
 }
}

 

======================================================================

 

//主干
public class Trunk implements Brache {

 private List<Brache> components = new ArrayList<Brache>();

 public void addComponent(Brache component) {
  if (component instanceof Leaf) {
   System.out.println("长新叶了");
  } else if (component instanceof Flower) {
   System.out.println("花苞初成");
  }
  components.add(component);
 }

 public void removeComponent(Brache component) {
  if (component instanceof Leaf) {
   System.out.println("叶子枯了");
  } else if (component instanceof Flower) {
   System.out.println("花儿谢了");
  }
  components.remove(component);
 }

 public List<Brache> getAllCompoments() {
  return components;
 }

 public void run() {
  for (Brache tempC : components) {
   tempC.run();
  }
 }
}

 

======================================================================

 

public class Client {
 //客户的(演示主干的形成)
 public static void main(String[] args) {
  //叶子
  Leaf leaf = new Leaf();
  //含苞的花儿啊
  Flower flower = new Flower();
  //主干一号
  Trunk trunk1 = new Trunk();
  trunk1.addComponent(leaf);//长出一片叶子
  trunk1.addComponent(flower);//冒出花苞
  trunk1.addComponent(flower);//冒出花苞
  trunk1.addComponent(flower);//冒出花苞
  //主干二号
  Trunk trunk2 = new Trunk();
  //枝繁叶茂
  trunk2.addComponent(leaf);//长出一片叶子
  trunk2.addComponent(leaf);//长出一片叶子
  trunk2.addComponent(leaf);//长出一片叶子
  trunk2.addComponent(leaf);//长出一片叶子
  trunk2.addComponent(leaf);//长出一片叶子
  //原来主干2是长在主干1上的分支
  trunk1.addComponent(trunk2);
  //像电影一样播放了
  trunk1.run();
 }
}

 

======================================================================

 

看了网上有的兄台写的资料,学习了一下,稍微做了个整理,希望对要学习的兄台有所帮助。呵呵!

你可能感兴趣的:(设计模式)