设计模式--组合模式
2016-04-08 00:00
218 查看
摘要: 简单记录组合模式的使用。
组合模式(composite):
组合模式的使用场景:
示例:
组合模式测试类TreeTest.java
树的类Tree.java
树节点类TreeNode.java
组合模式(composite):
组合模式有时又叫部分-整体模式,在处理类似树形结构的问题时比较方便。
组合模式的使用场景:
将多个对象组合在一起进行操作,常用于表示树形结构中。
示例:
组合模式测试类TreeTest.java
/** * 组合模式测试类 * * @author Kevin * @date 2016-3-15 */ public class TreeTest { public static void main(String[] args) { Tree tree = new Tree(); TreeNode rootNode = new TreeNode("根节点"); TreeNode nodeA = new TreeNode("子节点A"); TreeNode nodeB = new TreeNode("子节点B"); TreeNode nodeC = new TreeNode("子节点C"); nodeA.addChildren(nodeC); rootNode.addChildren(nodeA); rootNode.addChildren(nodeB); tree.setRoot(rootNode); System.out.println("build the tree finished!"); System.out.println("tree is : " + JSON.toJSONString(tree)); // tree的json形式的值为: // {"root":{"children":[{"children":[{"children":[],"name":"子节点C"}],"name":"子节点A"},{"children":[],"name":"子节点B"}],"name":"根节点"}} } }
树的类Tree.java
/** * 树 * * @author Kevin * @date 2016-3-15 */ public class Tree { private TreeNode root; public Tree() { } public void setRoot(TreeNode root) { this.root = root; } public TreeNode getRoot() { return root; } }
树节点类TreeNode.java
/** * 树节点 * * @author Kevin * @date 2016-3-15 */ public class TreeNode { /* 节点名称 */ private String name; /* 父节点 */ private TreeNode parent; /* 子节点 */ private List<TreeNode> children = new ArrayList<TreeNode>(); public TreeNode(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public TreeNode getParent() { return parent; } public void setParent(TreeNode parent) { this.parent = parent; } /** * 添加子节点 * * @author Kevin */ public void addChildren(TreeNode treeNode) { this.children.add(treeNode); } public List<TreeNode> getChildren() { return children; } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序