本文主要是介绍Java 设计模式之 Composite 组合模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Composite 组合模式相对简单,一般用于处理树状结构,递归结构,类似计算机中的文件系统,有文件夹,文件,文件夹里可以有文件;再比如一棵树,有枝干,叶子节点组成,枝干上又有叶子。
这里以构造一棵树并遍历枝干,叶子为例,编写代码如下:
抽象节点:
public abstract class Node {abstract void show(); }
叶子节点:
public class LeafNode extends Node{private String name;public LeafNode(String name) {this.name = name;}@Overridevoid show() {System.out.println(name);} }
枝干,包含叶子节点:
public class BranchNode extends Node{private String name;public List<Node> nodes = new ArrayList<>();public BranchNode(String name) {this.name = name;}@Overridevoid show() {System.out.println(name);}public void add(Node node) {nodes.add(node);} }
测试代码:
public class Test {public static void main(String[] args) {BranchNode root = new BranchNode("root");BranchNode branchA = new BranchNode("branchA");root.add(branchA);branchA.add(new LeafNode("leafa"));branchA.add(new LeafNode("leafb"));branchA.add(new LeafNode("leafc"));display(root, 0);}/** 递归显示 */public static void display(Node node, int level) {for (int i=0;i<level;i++) {System.out.print("-");}node.show();if (node instanceof BranchNode) {for (Node n : ((BranchNode) node).nodes) {display(n, level+1);}}} }
打印效果如下:
root
-branchA
--leafa
--leafb
--leafc
这篇关于Java 设计模式之 Composite 组合模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!