1. 概念

有时候又叫做部分-整体模式    存在整体和部分的时候  希望客户端忽略整体和部分的区别

2. 案例

/*********************************************************************** <pre>* FILE : Demo01.java* CLASS : Demo01** AUTHOR : Liaokailin** FUNCTION : TODO***======================================================================* CHANGE HISTORY LOG*----------------------------------------------------------------------* MOD. NO.|   DATE   |   NAME  | REASON  | CHANGE REQ.*----------------------------------------------------------------------*             |2014-3-5|Liaokailin| Created |* DESCRIPTION:* </pre>***********************************************************************/
package org.demo.composite;import java.util.ArrayList;
import java.util.Iterator;/*** 存在整体和部分的时候  希望客户端忽略整体和部分的区别* Function : * @author : Liaokailin* CreateDate : 2014-3-5* version : 1.0*/
public class Demo01 {@SuppressWarnings("unchecked")public static void main(String args[]){Node root = new Node("root") ;root.add(new Leaf("-leaf1")) ;Node c2 = new Node("-Node1") ;c2.add(new Leaf("--leaf2")) ;c2.add(new Leaf("--leaf3")) ;root.add(c2) ;c2 = new Node("-Node2");c2.add(new Leaf("--Leaf4"));c2.add(new Leaf("--Leaf5"));root.add(c2);root.operation() ;}
}interface Component{void operation() ;
}class Leaf implements Component{private String name  ;public Leaf(String name ){this.name = name ;}public String toString(){ return this.name ;}@Overridepublic void operation() {System.out.println(this) ;}
}class Node extends ArrayList implements Component{private String name ;public Node(String name){this.name = name ;}public String toString(){return this.name ;}@Overridepublic void operation() {System.out.println(this) ;for(Iterator it = iterator() ;it.hasNext();){  // iterator() :获取集合中的元素
            ((Component)(it.next())).operation() ;}}}

允许的结果:

root
-leaf1
-Node1
--leaf2
--leaf3
-Node2
--Leaf4
--Leaf5

转载于:https://www.cnblogs.com/liaokailin/p/3799930.html

设计模式09-组合模式相关推荐

  1. 每天一个设计模式之组合模式

    作者按:<每天一个设计模式>旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现.诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) ...

  2. 1、【设计模式】组合模式

    java设计模式之组合模式 [学习难度:★★★☆☆,使用频率:★★★★☆]  树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式 ...

  3. 详解设计模式:组合模式

    组合模式(Composite Pattern),又叫部分整体模式,是 GoF 的 23 种设计模式中的一种结构型设计模式. 组合模式 是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组 ...

  4. 结构型设计模式之组合模式

    结构型设计模式之组合模式 组合模式 应用场景 优缺点 主要角色 组合模式结构 分类 透明组合模式 创建抽象根节点 创建树枝节点 创建叶子节点 客户端调用 安全组合模式 创建抽象根节点 创建树枝节点 创 ...

  5. java设计模式之组合模式(树形层级)

    java设计模式之组合模式 学习难度:★★★☆☆,使用频率:★★★★☆]  树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式来 ...

  6. Java设计模式之组合模式详解

    文章目录 详解Java设计模式之组合模式 案例引入 组合模式 定义 模式类图结构 相关角色 典型代码 案例分析 类图设计 实例代码 结果分析 JavaJDK中的组合模式 透明组合模式 安全组合模式 组 ...

  7. Java设计模式之组合模式(UML类图分析+代码详解)

    大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...

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

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

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

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  10. 设计模式之组合模式(Composite)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

最新文章

  1. MyEclipse +Flex 整合
  2. 和尚挖井故事给程序员的启示!
  3. ASP.NET网页显示LED字体
  4. 通俗易懂的图解堆排序
  5. Cloud for Customer UI里点了超链接后的跳转处理
  6. 指引趋势和方向!2019开发者技能报告出炉!!
  7. thinkphp3.2 cli模式的正确使用方法
  8. Linux服务器安装宝塔面板,Linux服务器安装宝塔服务器管理控制面板
  9. 硅芯片拆解:早期 555 定时器芯片内部一览
  10. 上位机软件系统开发工具简介
  11. FlashPaper Win2003部署
  12. 3dMax模型数据转cesium Gltf模型
  13. OSChina 周二乱弹 —— 代码中的坑是怎么出现的?
  14. 对多个Excel表中的数据进行合并计算
  15. jquery中的ajax方法请求后台数据
  16. 手把手教你用Arduino接入阿里云物联网平台,ESP8266连接阿里云物联网平台必看教程...
  17. mysql中查找出生日期_如何在MySQL中根据出生日期记录显示日期名称?
  18. ip r route -n
  19. Android瘦身之tiny图片处理
  20. 【STM32】一次F105 USB OTG驱动填坑记录

热门文章

  1. select函数fdwrite用法_通俗易懂的学会:SQL窗口函数
  2. python画圣诞树_python画圣诞树
  3. python数据接口设计_基于python的接口测试框架设计(一)连接数据库
  4. R语言多元统计包简介:各种假设检验 统计方法 聚类分析 数据处理
  5. jenkins教程_2 入门
  6. python装饰器是什么意思_对Python装饰器的理解
  7. 高中电子技术——三极管万用表极性测量(指针万用表和数字万用表)
  8. mysql 导入导出 csv_mysql文件导入导出为csv格式
  9. 【数据库原理实验(openGauss)】 安全性控制
  10. 【C++入门】C++ List类