组合模式: 又叫部分整体模式, 它创建了对象组的树形结构,将对象组合成树状结构以表示"整体-部分"的层次关系。

JDK中的HashMap就使用了组合模式

public abstract class OrganizationComponent {private String name; // 名字private String desc; // 说明public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public OrganizationComponent(String name,String desc){super();this.name = name;this.desc = desc;}protected void add(OrganizationComponent organizationComponent){// 默认实现throw new UnsupportedOperationException();}protected void remove(OrganizationComponent organizationComponent){// 默认实现throw new UnsupportedOperationException();}protected abstract void print();
}import java.util.ArrayList;
import java.util.List;public class University extends OrganizationComponent{List<OrganizationComponent> organizationComponents = new ArrayList<OrganizationComponent>();public University(String name, String desc) {super(name, desc);}@Overrideprotected void add(OrganizationComponent organizationComponent) {organizationComponents.add(organizationComponent);}@Overrideprotected void remove(OrganizationComponent organizationComponent) {organizationComponents.remove(organizationComponent);}@Overridepublic String getDesc() {return super.getDesc();}@Overrideprotected void print() {System.out.println("--------"+getName()+"----------");for (OrganizationComponent organizationComponent : organizationComponents) {organizationComponent.print();System.out.println();}}
}import java.util.ArrayList;
import java.util.List;public class College extends OrganizationComponent{// 存放departmentList<OrganizationComponent> organizationComponents = new ArrayList<OrganizationComponent>();public College(String name, String desc) {super(name, desc);}@Overrideprotected void add(OrganizationComponent organizationComponent) {organizationComponents.add(organizationComponent);}@Overrideprotected void remove(OrganizationComponent organizationComponent) {organizationComponents.remove(organizationComponent);}@Overridepublic String getDesc() {return super.getDesc();}@Overrideprotected void print() {System.out.println(" -------"+getName()+"--------- ");for (OrganizationComponent organizationComponent : organizationComponents) {organizationComponent.print();}}
}public class Department extends OrganizationComponent{public Department(String name, String desc) {super(name, desc);}@Overridepublic String getDesc() {return super.getDesc();}@Overrideprotected void print() {System.out.println("  ------"+getName()+"-------  ");}
}public class Client {public static void main(String[] args){University university = new University("梁山大学", "成立于宋朝");College college1 = new College("兵部", "林冲部长");Department department1 = new Department("禁军系", "八十万士兵");Department department2 = new Department("后勤系", "厨师做的一手好菜");College college2 = new College("通信部", "戴宗部长");Department department3 = new Department("跑腿系", "十万士兵");university.add(college1);college1.add(department1);college1.add(department2);university.add(college2);college2.add(department3);university.print();}
}

设计模式:组合模式(Composite Pattern)相关推荐

  1. C#设计模式——组合模式(Composite Pattern)

    一.概述 在软件开发中,我们往往会遇上类似树形结构的对象体系.即某一对象既可能在树形结构中作为叶节点存在,也可能作为分支节点存在.比如在文件系统中,文件是作为叶节点存在,而文件夹就是分支节点.在设计这 ...

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

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

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

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

  4. python 设计模式之组合模式Composite Pattern

    #引入一 文件夹对我们来说很熟悉,文件夹里面可以包含文件夹,也可以包含文件. 那么文件夹是个容器,文件夹里面的文件夹也是个容器,文件夹里面的文件是对象. 这是一个树形结构 咱们生活工作中常用的一种结构 ...

  5. 24组合模式(Composite Pattern)

    动机(Motivate):     组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元 ...

  6. 设计模式 -- 组合模式(Composite)

    写在前面的话:读书破万卷,编码如有神 -------------------------------------------------------------------- 主要内容包括: 初识组合 ...

  7. 组合模式(Composite Pattern)

    组合模式概述 定义:组合多个对象形成树形结构以表示具有部分-整体关系的层次结构.组合模式让客户端可以统一对待单个对象和组合对象.又被成为"部分-整体"(Part-Whole)模式, ...

  8. 组合模式测试组合模式(Composite Pattern)

    改章节是一篇关于组合模式测试的帖子 像一个树形结构一样使用基本的对象和自己本身构建一个复杂的对象,称为组合模式. 这类模式很轻易学习以及应用到某个系统中.组合模式属于结构设计模式之一,比拟常用.经典的 ...

  9. 组合模式-Composite Pattern

    目录 组合模式的定义与特点 组合模式的结构与实现 组合模式的应用实例 组合模式的应用场景 组合模式的扩展 树形结构在软件中随处可见,例如操作系统中的目录结构.应用软件中的菜单.办公系统中的公司组织结构 ...

最新文章

  1. Go:json包的坑
  2. 安卓开发_自定义控件_界面的简单侧滑
  3. Web后端学习笔记 Flask(8) WTForms 表单验证,文件上传
  4. python rindex()_Python3 rindex()方法
  5. Oracle 11g Database和ASM默认的审计策略和相关操作
  6. linux重定向文件容加时间,linux – Shell重定向和文件I / O持续时间
  7. 基于51单片机简易计算器LCD1602显示
  8. java整人代码大全_整人代码大全.doc
  9. 天猫店群选哪个类目好?新手朋友做天猫无货源,性价比高的类目
  10. 眼图观测实验报告_通信原理实验报告 -
  11. 域中计算机改名,找不到网络路径,电脑加域失败提示”找不到网络路径”的解决办法...
  12. (框架)Deepracer 自动训练 框架的搭建
  13. 三星s8文档有html,三星s8有哪些特殊功能 这些绝对能让你羡慕
  14. RHEL服务篇_DNS服务
  15. 二分查找总结——左闭右开区间和左闭右闭区间(C++语言)
  16. CAD制图软件中多线段显示不正确怎么办?
  17. windows清理_CCleaner专业的windows清理工具【附专业版升级方法】
  18. oracle求数据走势,趋势分析
  19. 视频教程-Excel高质量商务图表-Office/WPS
  20. linux more命令 翻页,Linux more命令:分屏显示文件内容

热门文章

  1. Ansible基础入门
  2. Mac下Jenkins+SVN+Xcode构建持续
  3. PC问题-该虚拟机似乎正在使用中
  4. 【动态规划】最长公共上升子序列
  5. EIGRP协议邻居详解及故障实战分析
  6. java设计模式概述
  7. Linux系统休眠(System Suspend)和设备中断处理
  8. C语言OJ项目参考(2399)求倒数和
  9. apache synapse使用(1)
  10. Open×××的新钩子设计