组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。

介绍

意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。

主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。

何时使用: 1、您想表示对象的部分-整体层次结构(树形结构)。 2、您希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

如何解决:树枝和叶子实现统一接口,树枝内部组合该接口。

关键代码:树枝内部组合该接口,并且含有内部属性 List,里面放 Component。

应用实例: 1、算术表达式包括操作数、操作符和另一个操作数,其中,另一个操作符也可以是操作数、操作符和另一个操作数。 2、在 JAVA AWT 和 SWING 中,对于 Button 和 Checkbox 是树叶,Container 是树枝。

优点: 1、高层模块调用简单。 2、节点自由增加。

缺点:在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。

使用场景:部分、整体场景,如树形菜单,文件、文件夹的管理。

注意事项:定义时为具体类。

实现

我们有一个类 Employee,该类被当作组合模型类。CompositePatternDemo,我们的演示类使用 Employee 类来添加部门层次结构,并打印所有员工。

组合模式java怎么获取钥匙_java中组合模式详解和使用方法相关推荐

  1. java的static类_java中staticclass静态类详解

    一般情况下是不可以用static修饰类的.如果一定要用static修饰类的话,通常static修饰的是匿名内部类. 在一个类中创建另外一个类,叫做成员内部类.这个成员内部类可以静态的(利用static ...

  2. Java 初始化 代码块_Java中初始化块详解及实例代码

    Java中初始化块详解 在Java中,有两种初始化块:静态初始化块和非静态初始化块. 静态初始化块:使用static定义,当类装载到系统时执行一次.若在静态初始化块中想初始化变量,那仅能初始化类变量, ...

  3. java volatile 基本类型_Java中Volatile关键字详解(转)

    一.基本概念 先补充一下概念:Java 内存模型中的可见性.原子性和有序性. 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉.通常,我们无法确保执行读操作的线程能适时地看到其 ...

  4. java三目运算_Java中的三目运算符 详解

    对于有些选择分支结构,可以使用简单的条件运算符来代替. 如: if(a min=a; else min=b; 可以用下面的条件运算符来处理 min=(a 其中"(a 条件运算符由两个符号组成 ...

  5. java type 简书_Java中的Type详解

    ParameterizedType 参数化类型的使用 package com.keytop.att; /** * 实体类 * Created by fengwenhua on 2017/4/25. * ...

  6. java 自定义正则表达式_java中正则表达式实例详解

    Java中正则表达式运用实例(参看java中正则表达式运用详解): 测试代码 package test; /** * 在String的matches()方法,split()方法中使用正则表达式. * ...

  7. java字符编码详解_Java中字符编码格式详解

    一.前言 在分析Comparable和Comparator的时候,分析到了String类的compareTo方法,String底层是用char[]数组来存放元素,在比较的时候是比较的两个字符串的字符, ...

  8. java jtable组件_java中jtable组件详解实例

    java中jtable组件详解实例 java 表格控件 JTable 常用操作详解 JTable 是 Swing 编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处.一 ...

  9. Java中static的作用详解_java中static作用详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

最新文章

  1. apache源码安装
  2. ALGO-22_蓝桥杯_算法训练_数的划分(DP)
  3. 《图解服务器网络架构》 学习笔记
  4. LNMP一键安装包在安装完成后的一些安全设置
  5. linux centos-6.5,Linux(CentOS 6.5)安装 mysql
  6. 位、字,字节与KB的关系?
  7. 信息学奥赛一本通 2063:【例1.4】牛吃牧草
  8. [视频]MAC中如何单独放大文本字体
  9. android 7修改机型,Android 7.0支持机型大全
  10. 什么是网站被黑了?网站被黑客攻击怎么办?
  11. 无人机基于目标检测的路径规划任务
  12. 用 CaptureScreenshot捕捉游戏画面(截图,截屏)
  13. vue路由文件相关配置
  14. Mac Vmware
  15. 电子商务时代网络营销
  16. python 傅里叶曲线拟合
  17. 基于3dmax及Unity的虚拟博物展览馆
  18. 单电源转正负电源的实现方式
  19. 苹果cmsv10蓝色简洁影视电影资源采集网站模板
  20. JDK API(SE8)(部分System,Math,Integer类)

热门文章

  1. swift textView字数限制,textView点击完成隐藏键盘
  2. 关联查询一张小表。对性能有影响吗(mysql)
  3. firebug的一个有趣现象
  4. asp.net2.0密码强度验证
  5. SCUT - 337 - 岩殿居蟹 - 线段树 - 树状数组
  6. [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse
  7. 抽象类,接口都与继承有关
  8. 【python 3.6】python读取json数据存入MySQL(一)
  9. ES6重点--笔记(转)
  10. STL之deque详解