composite java_组合模式(Composite)——Java
Component:节点的抽象类
public abstract class Component {
public abstract void Operation();
public abstract void Add(Component c);
public abstract void Remove(Component c);
public abstract Component GetChild(int i);
}
Composite:组合体,如树一般,可包含叶子节点或子树
import java.util.ArrayList;
import java.util.List;
public class Composite extends Component {
// Composite由多个Component组成(聚合关系)
private List list = new ArrayList();
public void Operation() {
for (Component c : list) {
// 遍历所有子节点,并执行子节点的方法
c.Operation();
}
}
public void Add(Component c) {
list.add(c);
}
@Override
public void Remove(Component c) {
// TODO Auto-generated method stub
}
@Override
public Component GetChild(int i) {
// TODO Auto-generated method stub
return null;
}
}
Leaf:叶子节点
public class Leaf extends Component {
public void Operation() {
System.out.println("this is leaf");
}
@Override
public void Add(Component c) {
// TODO Auto-generated method stub
}
@Override
public void Remove(Component c) {
// TODO Auto-generated method stub
}
@Override
public Component GetChild(int i) {
// TODO Auto-generated method stub
return null;
}
}
Client:客户端,构造一个组合体,并遍历该组合体的所有叶子节点,如下图所示:
这个类很重要,这个类是否写正确,以及运行结果是否正确意味着对设计模式是否真正理解
public class Client {
public static void main(String[] args) {
Leaf leaf1 = new Leaf();// 叶子节点
Leaf leaf2 = new Leaf();
Leaf leaf3 = new Leaf();
Composite c = new Composite();// 子树节点,包含两个叶子节点
c.Add(leaf2);
c.Add(leaf3);
Composite composite = new Composite();// 树
composite.Add(c);
composite.Add(leaf1);
composite.Operation();// 遍历所有节点
}
}
composite java_组合模式(Composite)——Java相关推荐
- Java设计模式 —— 组合模式(Composite)
Java设计模式 -- 组合模式(Composite) 定义 Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性. ...
- 【结构型】组合模式(Composite)
目录 组合模式(Composite) 适用场景 组合模式实例代码(Java) 组合模式(Composite) 将对象组合成树型结构以表示"部分-整体"的层次结构.Composite ...
- 结构型 组合模式 Composite
Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使 用具有一致性. Mary今天过生日."我过生日,你要送我一件礼物. ...
- 设计模式(17):结构型-组合模式(Composite)(2)
设计模式(Design pattern) 是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式 ...
- 【设计模式自习室】结构型:组合模式 Composite
前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...
- [设计模式] 8 组合模式 Composite
DP书上给出的定义:将对象组合成树形结构以表示"部分-整体"的层次结构.组合使得用户对单个对象和组合对象的使用具有一致性.注意两个字"树形".这种树形结构在现实 ...
- 【设计模式】组合模式 Composite Pattern
树形结构是软件行业很常见的一种结构,几乎随处可见, 比如: HTML 页面中的DOM,产品的分类,通常一些应用或网站的菜单,Windows Form 中的控件继承关系,Android中的View继承 ...
- 设计模式学习笔记(六) - 组合模式 Composite (树状结构专用模式)
组合模式 Composite 树状结构专用模式 递归遍历结构
- 设计模式之组合模式(Composite)
1.引言 在学习JUnit的时候,看到一段话"JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test的对象:当调用TestSuite对象的run()方 ...
最新文章
- 【python初识】列表与函数模块
- Java是如何加载资源文件的?(源码解毒)
- c 调用java包_C#调用java代码(IKVMC)
- Win7环境下IPython Notebook的安装
- 4修改初始值_Java基础语法 --4(连载)
- 联想小新13pro锐龙版网卡_12G大内存 联想小新Air 14锐龙版仅售3799
- PAT乙级 1005继续3n+1猜想
- opencv训练样本分类器
- Solaris下怎样改动文件创建时间及查询
- 用后端接口调试工具Insomnia发送请求
- 强悍的命令行 —— basename 去掉路径和扩展名 dirname 获取路径
- ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议
- 笔记_pytorch
- 无线传感器网络与数据交换解析
- spring---FactoryBean与BeanFactory的区别
- wx.getUserProfile is not a function
- 22-09-04 西安 谷粒商城(01)MySQL主从复制、MyCat读写分离、MyCat分库分表
- python学习群发邮件
- [网鼎杯 2020 青龙组]虚幻2 详解 (python脚本)
- jquery插件zoom