Java设计模式偷跑系列(十二)组合模式建模和实现
2024-08-23 20:02:47
转载请注明出处: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());
}
}
}
说明。这里构造了这样一棵树:
三、应用场景
将多个对象组合在一起进行操作。经常使用于表示树形结构中。比如二叉树等。
四、总结
组合能让客户以一致的方式处理个别对象以及对象组合。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
最新文章
- WebStorm设置手机测试服务器-局域网内其他设备访问
- js奇葩错误 字符串传递问题
- 我对前端MVC的理解
- 用excel公式生成有规律的代码,减少编程工作量
- # Consumed parameters
- 前端面试angular 常问问题总结
- Git &; github 使用指南
- Notepad++中实现Markdown语法高亮与实时预览
- ThreadLocal的简单使用和实现原理
- linux 下一些命令
- bootstrap弹窗、弹出层、modal
- GT sport真实赛道详解 - Brands Hatch | 伯蘭士赫治GP賽車場
- 使用SignalR进行实时通信
- angular分页插件tm.pagination二次触发问题解决歪方案
- 性能测试十一:jmeter进阶之java请求
- springMVC源码分析--HttpMessageConverter参数read操作(二)
- vs项目同步到gitee方法
- Python之两个列表一起打乱
- codevs 2503 失恋28天-缝补礼物
- .net core 项目加载提示项目文件不完整缺少预期导入的解决办法
热门文章
- Restify —— 在Node.js中构建正确的REST Web服务
- 在投票系统方法的原则刷票(突破ip限制刷票PHP版)
- PHP PDO sqlite ,Unable to Open database file的解决方法
- system strategies of Resources Deadlock
- HDU 1677	Nested Dolls
- 【iOS】Web Color 的 Swift 实现
- 编程基础——C/C++,Java,ObjC讨论回调模式
- BZOJ 2435 NOI2011 道路建设 BFS/DFS
- xsd的解释说明
- Android 中字体的处理