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相关推荐

  1. Java设计模式 —— 组合模式(Composite)

    Java设计模式 -- 组合模式(Composite) 定义 Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使用具有一致性. ...

  2. 【结构型】组合模式(Composite)

    目录 组合模式(Composite) 适用场景 组合模式实例代码(Java) 组合模式(Composite) 将对象组合成树型结构以表示"部分-整体"的层次结构.Composite ...

  3. 结构型 组合模式 Composite

    Composite,组合模式:将对象组合成树形结构以表示部分整体的关系,Composite使得用户对单个对象和组合对象的使 用具有一致性. Mary今天过生日."我过生日,你要送我一件礼物. ...

  4. 设计模式(17):结构型-组合模式(Composite)(2)

    设计模式(Design pattern) 是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式 ...

  5. 【设计模式自习室】结构型:组合模式 Composite

    前言 <设计模式自习室>系列,顾名思义,本系列文章带你温习常见的设计模式.主要内容有: 该模式的介绍,包括: 引子.意图(大白话解释) 类图.时序图(理论规范) 该模式的代码示例:熟悉该模 ...

  6. [设计模式] 8 组合模式 Composite

    DP书上给出的定义:将对象组合成树形结构以表示"部分-整体"的层次结构.组合使得用户对单个对象和组合对象的使用具有一致性.注意两个字"树形".这种树形结构在现实 ...

  7. 【设计模式】组合模式 Composite Pattern

    树形结构是软件行业很常见的一种结构,几乎随处可见,  比如: HTML 页面中的DOM,产品的分类,通常一些应用或网站的菜单,Windows Form 中的控件继承关系,Android中的View继承 ...

  8. 设计模式学习笔记(六) - 组合模式 Composite (树状结构专用模式)

    组合模式 Composite 树状结构专用模式   递归遍历结构

  9. 设计模式之组合模式(Composite)

    1.引言 在学习JUnit的时候,看到一段话"JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test的对象:当调用TestSuite对象的run()方 ...

最新文章

  1. 【python初识】列表与函数模块
  2. Java是如何加载资源文件的?(源码解毒)
  3. c 调用java包_C#调用java代码(IKVMC)
  4. Win7环境下IPython Notebook的安装
  5. 4修改初始值_Java基础语法 --4(连载)
  6. 联想小新13pro锐龙版网卡_12G大内存 联想小新Air 14锐龙版仅售3799
  7. PAT乙级 1005继续3n+1猜想
  8. opencv训练样本分类器
  9. Solaris下怎样改动文件创建时间及查询
  10. 用后端接口调试工具Insomnia发送请求
  11. 强悍的命令行 —— basename 去掉路径和扩展名 dirname 获取路径
  12. ZeroMQ接口函数之 :zmq_ipc – ZMQ本地进程间通信传输协议
  13. 笔记_pytorch
  14. 无线传感器网络与数据交换解析
  15. spring---FactoryBean与BeanFactory的区别
  16. wx.getUserProfile is not a function
  17. 22-09-04 西安 谷粒商城(01)MySQL主从复制、MyCat读写分离、MyCat分库分表
  18. python学习群发邮件
  19. [网鼎杯 2020 青龙组]虚幻2 详解 (python脚本)
  20. jquery插件zoom

热门文章

  1. Vue之点击收藏与取消收藏
  2. 检测浏览器无痕模式下是否支持localStorage
  3. 【工作需要】CAD+VBA 实现图块的旋转平移缩放和拼接
  4. Python基础:第019课——窗口缩放事件、最小化状态及处理
  5. web全栈之ECMAScript6.0
  6. poj3046 Ant Counting
  7. Arduino开发板连接XBee模块的方法
  8. 【Web前端】配色方案(全览)
  9. iThoughtsX for mac(优秀的思维导图软件)
  10. mybatis----xml常用的标签