转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39828653

组合模式(Composite):组合模式有时又叫部分-总体模式。将对象组合成树形结构来表示“部分-总体”层次结构。

组合模式在处理树形结构的问题时比較方便。

一、uml建模:

二、代码实现

/**
* 演示样例:组合模式有时也称“整合-部分”模式
*
* 组合模式在处理树形结构的问题时比較方便
*
* 节点
*/
class TreeNode {
/** 节点名称 */
private String name;
private TreeNode parent;
private ArrayList<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;
} /**
* 对孩子节点的增删查操作
*/
public void add(TreeNode node) {
children.add(node);
} public void delete(TreeNode node) {
children.add(node);
} public Iterator<TreeNode> getChildren() {
return children.iterator();
} } /**
* client測试类
*
* @author Leo
*/
public class Test {
public static void main(String[] args) {
TreeNode rootNode = new TreeNode("A");
TreeNode bNode = new TreeNode("B");
TreeNode cNode = new TreeNode("C");
TreeNode dNode = new TreeNode("D");
rootNode.add(bNode);
rootNode.add(cNode);
cNode.add(dNode);
Iterator<TreeNode> iterator = rootNode.getChildren();
while (iterator.hasNext()) {
System.out.println(iterator.next().getName());
}
}
}

说明。这里构造了这样一棵树:

三、应用场景

将多个对象组合在一起进行操作。经常使用于表示树形结构中。比如二叉树等。

四、总结

组合能让客户以一致的方式处理个别对象以及对象组合。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

最新文章

  1. WebStorm设置手机测试服务器-局域网内其他设备访问
  2. js奇葩错误 字符串传递问题
  3. 我对前端MVC的理解
  4. 用excel公式生成有规律的代码,减少编程工作量
  5. # Consumed parameters
  6. 前端面试angular 常问问题总结
  7. Git &amp; github 使用指南
  8. Notepad++中实现Markdown语法高亮与实时预览
  9. ThreadLocal的简单使用和实现原理
  10. linux 下一些命令
  11. bootstrap弹窗、弹出层、modal
  12. GT sport真实赛道详解 - Brands Hatch | 伯蘭士赫治GP賽車場
  13. 使用SignalR进行实时通信
  14. angular分页插件tm.pagination二次触发问题解决歪方案
  15. 性能测试十一:jmeter进阶之java请求
  16. springMVC源码分析--HttpMessageConverter参数read操作(二)
  17. vs项目同步到gitee方法
  18. Python之两个列表一起打乱
  19. codevs 2503 失恋28天-缝补礼物
  20. .net core 项目加载提示项目文件不完整缺少预期导入的解决办法

热门文章

  1. Restify —— 在Node.js中构建正确的REST Web服务
  2. 在投票系统方法的原则刷票(突破ip限制刷票PHP版)
  3. PHP PDO sqlite ,Unable to Open database file的解决方法
  4. system strategies of Resources Deadlock
  5. HDU 1677 Nested Dolls
  6. 【iOS】Web Color 的 Swift 实现
  7. 编程基础——C/C++,Java,ObjC讨论回调模式
  8. BZOJ 2435 NOI2011 道路建设 BFS/DFS
  9. xsd的解释说明
  10. Android 中字体的处理