Java设计模式概述之结构型模式(组合模式)
来源:互联网 发布:恐龙统治知乎 编辑:程序博客网 时间:2024/06/05 00:48
四、组合模式(Composite)
组合模式相对不好阐述。引用大话设计模式的片段:“当发现需求中是体现部分与整体层次结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑组合模式了。”
组合模式与树形结构程序设计是密不可分的。组合模式很好的体现了“整体——部分”的关系。
下面给大家一段自己写的有关组合模式的代码:
import java.util.Enumeration;import java.util.Vector;/** * @author Hanlin Wang */public class CompositeMode { public static void main(String[] args) { TreeNode A = new TreeNode("A"); TreeNode B = new TreeNode("B"); TreeNode C = new TreeNode("C"); TreeNode D = new TreeNode("D"); TreeNode E = new TreeNode("E"); TreeNode F = new TreeNode("F"); TreeNode G = new TreeNode("G"); TreeNode H = new TreeNode("H"); TreeNode I = new TreeNode("I"); TreeNode J = new TreeNode("J"); TreeNode K = new TreeNode("K"); TreeNode L = new TreeNode("L"); TreeNode M = new TreeNode("M"); TreeNode N = new TreeNode("N"); TreeNode O = new TreeNode("O"); A.addChild(B); A.addChild(C); B.addChild(D); B.addChild(E); C.addChild(F); C.addChild(G); D.addChild(H); D.addChild(I); E.addChild(J); E.addChild(K); F.addChild(L); F.addChild(M); G.addChild(N); G.addChild(O); TreeNode.showTreeNodes(A); /* * 运行结果: * * A节点的子元素: B C * B节点的子元素: D E * D节点的子元素: H I * E节点的子元素: J K * C节点的子元素: F G * F节点的子元素: L M * G节点的子元素: N O */ }}//定义节点类class TreeNode{ private String nodeName; private Vector<TreeNode> children = new Vector<TreeNode>(); public TreeNode(String nodeName){ this.nodeName = nodeName; } public String getNodeName() { return nodeName; } public void setNodeName(String nodeName) { this.nodeName = nodeName; } public Enumeration<TreeNode> getChildren() { return children.elements(); } public void addChild(TreeNode node) { children.add(node); } public static void showTreeNodes(TreeNode node){ Enumeration<TreeNode> children = node.getChildren(); System.out.print(node.getNodeName()+"节点的子元素: "); while (children.hasMoreElements()) { TreeNode subNode = children.nextElement(); System.out.print(subNode.getNodeName()+" "); } Enumeration<TreeNode> children2 = node.getChildren(); while (children2.hasMoreElements()) { TreeNode subNode = children2.nextElement(); if (subNode.getChildren().hasMoreElements()) { System.out.println(); showTreeNodes(subNode); } } }}
TreeNode是基本的节点类,里面定义了一个Vector类型的children成员变量和一系列操纵叶子节点的方法。最后还定义了一个showTreeNodes方法用于打印本节点及本节点以下的所有的叶子节点。
注意,showTreeNodes方法中会判断下一个叶子节点内的节点是否还有子节点,如果有,对showTreeNodes方法本身进行递归调用。
0 0
- Java设计模式概述之结构型模式(组合模式)
- java设计模式(结构型)之组合模式
- 设计模式-结构型之组合模式
- java设计模式——结构型之组合模式
- 【结构型模式】组合模式(Composite)之23种java设计模式
- Java设计模式之结构型模式-组合模式(Composite)
- 设计模式--结构模式--组合模式--Java
- Java设计模式概述之结构型模式(适配器模式)
- Java设计模式概述之结构型模式(代理模式)
- Java设计模式概述之结构型模式(装饰器模式)
- Java设计模式概述之结构型模式(享元模式)
- Java设计模式概述之结构型模式(外观模式)
- Java设计模式概述之结构型模式(桥接模式)
- 结构型:设计模式之组合模式(十)
- 结构型设计模式之组合模式(Composite Pattern)
- 设计模式之结构型-组合模式(12)
- 组合模式(结构型设计模式)
- Java设计模式(11)结构型:组合模式
- 面向对象程序设计之基类,派生类与虚函数
- (转) jQuery易忽略的知识点总结
- Makefile中源码和编译标志的位置
- PHP正则匹配
- Recording Videos Simply笔记
- Java设计模式概述之结构型模式(组合模式)
- python学习(二)pycharm安装配置篇
- Git暂存区
- vr优化
- 并查集详解(转)
- 青蛙的约会(扩欧)
- Android Studio 中java文件右下角显示红色j而不是C标识
- java web服务器实现跨域访问
- php时间戳选取设置(选取地理位置不同时间不同)