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();
}
}
======================================================================
看了网上有的兄台写的资料,学习了一下,稍微做了个整理,希望对要学习的兄台有所帮助。呵呵!