设计模式09-组合模式
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-组合模式相关推荐
- 每天一个设计模式之组合模式
作者按:<每天一个设计模式>旨在初步领会设计模式的精髓,目前采用javascript和python两种语言实现.诚然,每种设计模式都有多种实现方式,但此小册只记录最直截了当的实现方式 :) ...
- 1、【设计模式】组合模式
java设计模式之组合模式 [学习难度:★★★☆☆,使用频率:★★★★☆] 树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式 ...
- 详解设计模式:组合模式
组合模式(Composite Pattern),又叫部分整体模式,是 GoF 的 23 种设计模式中的一种结构型设计模式. 组合模式 是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组 ...
- 结构型设计模式之组合模式
结构型设计模式之组合模式 组合模式 应用场景 优缺点 主要角色 组合模式结构 分类 透明组合模式 创建抽象根节点 创建树枝节点 创建叶子节点 客户端调用 安全组合模式 创建抽象根节点 创建树枝节点 创 ...
- java设计模式之组合模式(树形层级)
java设计模式之组合模式 学习难度:★★★☆☆,使用频率:★★★★☆] 树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构等等,如何运用面向对象的方式来 ...
- Java设计模式之组合模式详解
文章目录 详解Java设计模式之组合模式 案例引入 组合模式 定义 模式类图结构 相关角色 典型代码 案例分析 类图设计 实例代码 结果分析 JavaJDK中的组合模式 透明组合模式 安全组合模式 组 ...
- Java设计模式之组合模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- [设计模式] 8 组合模式 Composite
DP书上给出的定义:将对象组合成树形结构以表示"部分-整体"的层次结构.组合使得用户对单个对象和组合对象的使用具有一致性.注意两个字"树形".这种树形结构在现实 ...
- 设计模式:组合模式(Composite)
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 设计模式之组合模式(Composite)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
最新文章
- MyEclipse +Flex 整合
- 和尚挖井故事给程序员的启示!
- ASP.NET网页显示LED字体
- 通俗易懂的图解堆排序
- Cloud for Customer UI里点了超链接后的跳转处理
- 指引趋势和方向!2019开发者技能报告出炉!!
- thinkphp3.2 cli模式的正确使用方法
- Linux服务器安装宝塔面板,Linux服务器安装宝塔服务器管理控制面板
- 硅芯片拆解:早期 555 定时器芯片内部一览
- 上位机软件系统开发工具简介
- FlashPaper Win2003部署
- 3dMax模型数据转cesium Gltf模型
- OSChina 周二乱弹 —— 代码中的坑是怎么出现的?
- 对多个Excel表中的数据进行合并计算
- jquery中的ajax方法请求后台数据
- 手把手教你用Arduino接入阿里云物联网平台,ESP8266连接阿里云物联网平台必看教程...
- mysql中查找出生日期_如何在MySQL中根据出生日期记录显示日期名称?
- ip r route -n
- Android瘦身之tiny图片处理
- 【STM32】一次F105 USB OTG驱动填坑记录
热门文章
- select函数fdwrite用法_通俗易懂的学会:SQL窗口函数
- python画圣诞树_python画圣诞树
- python数据接口设计_基于python的接口测试框架设计(一)连接数据库
- R语言多元统计包简介:各种假设检验 统计方法 聚类分析 数据处理
- jenkins教程_2 入门
- python装饰器是什么意思_对Python装饰器的理解
- 高中电子技术——三极管万用表极性测量(指针万用表和数字万用表)
- mysql 导入导出 csv_mysql文件导入导出为csv格式
- 【数据库原理实验(openGauss)】 安全性控制
- 【C++入门】C++ List类