Composite 组合模式
Composite 组合模式
树状结构专用模式
节点接口node,其中叶子节点leafNode和分枝节点branchNode,分枝节点聚合node泛型的list.
public class Composite {public static void main(String[] args) {BranchNode root = new BranchNode("Root");LeafNode leafNode1 = new LeafNode("leafNode1");BranchNode branchNode1 = new BranchNode("branchNode1");LeafNode leafNode2 = new LeafNode("leafNode2");LeafNode leafNode3 = new LeafNode("leafNode3");BranchNode branchNode2 = new BranchNode("branchNode2");LeafNode leafNode4 = new LeafNode("leafNode4");LeafNode leafNode5 = new LeafNode("leafNode5");root.add(leafNode1).add(branchNode1);branchNode1.add(leafNode2).add(leafNode3).add(branchNode2);branchNode2.add(leafNode4).add(leafNode5);tree(root,0);}public static void tree(Node node,int index){for (int i =0;i<index;i++){System.out.printf("--");}node.p();if(node instanceof BranchNode){for(Node node1: ((BranchNode) node).nodeArrayList){tree(node1,index+1);}}}}//节点接口类interface Node{void p();}//叶子节点类class LeafNode implements Node{String name;@Overridepublic void p() {System.out.println(name);}public LeafNode(String name) {this.name = name;}}//分枝节点类class BranchNode implements Node{String name;ArrayList<Node> nodeArrayList = new ArrayList<>();public BranchNode(String name) {this.name = name;}@Overridepublic void p() {System.out.println(name);}public BranchNode add(Node node){nodeArrayList.add(node);return this;}}
