您的位置:首页 > 其它

设计模式学习系列六:组合模式(composite)

2013-03-22 13:40 633 查看
 

组合模式

看了半天,不知道这种模式存在的意义。。。

 

http://blog.csdn.net/iihero/article/details/8201962

 

组合模式(Composite)

 把整体和局部的关系用树状结构描述出来,使得客户端把整体对象和局部对象同等看待。

 

import java.util.*;

public class TestComposite {

public static void main(String[] args) {

Node n1=new LeafNode(3);

Node n2=new LeafNode(4);

Node n3=new LeafNode(6);

Node n4=new LeafNode(5);

Node n5=new LeafNode(2);

Node n6=new LeafNode(9);

Node n7=new LeafNode(12);

Node n8=new LeafNode(7);

Node n9=new LeafNode(8);

Node c1=new CompositeNode(n1,n2,n3);

Node c4=new CompositeNode(n8,n9);

Node c3=new CompositeNode(n5,c4);

Node c2=new CompositeNode(n4,c3);

Node c5=new CompositeNode(n6,n7);

Node root=new CompositeNode(c1,c2,c5);

System.out.println(root.getValue());

}

}

abstract class Node{

public abstract int getValue();

}

class LeafNode extends Node{

int value;

public LeafNode(int value){

this.value=value;

}

public int getValue(){

return value;

}

}

class CompositeNode extends Node{

private List children=new ArrayList();

public CompositeNode(Node... nodes){

for(Node n:nodes){

children.add(n);

}

}

public int getValue(){

int result=0;

for(Node n:children){

result+=n.getValue();

}

return result;

}

}


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