java实现Composite(组合)模式】的更多相关文章

组合模式涉及的是一组对象,其中一些对象可能含有其他对象,这些对象也可以含有对象,因此,有些对象代表的是对象群组. Composite模式的设计意图在于:让所有的用户能够用统一的接口处理单个对象以及对象群组 package app.composite; import java.util.ArrayList; import java.util.Iterator; /** * 类的作用:存在年级和学校,都实现People接口,有输出名字的功能,实现组合模式 * 调用School的getName();获…
组合模式 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性.掌握组合模式的重点是要理解清楚 “部分/整体” 还有 ”单个对象“ 与 "组合对象" 的含义.组合模式可以让客户端像修改配置文件一样简单的完成本来需要流程控制语句来完成的功能.经典案例:系统目录结构,网站导航结构等.(百度百科) 组合模式UML图 组合模式代码 package com.roc.composite; /** * 公共对象声明 * @author l…
一.模式说明 能够使容器与内容物具有一致性,创造出递归结构的模式就是Composite组合模式. 举个例子:计算机中的文件系统中有文件和文件夹的概念,我们知道,文件夹可以包含文件,也可以包含子文件夹,子文件夹中又可以包含文件和文件夹.如果将文件和文件夹都看作“目录条目(Directory Entry)”,那么文件系统就形成了一个递归的容器,这就是一种组合模式. 更多例子,在Windows操作系统中,一个窗口中可以包含子窗口,从而形成容器的递归:一条宏命令又可以包含另一个宏命令:一个文章章节又可以…
Composite组合模式作用:将对象组合成树形结构以表示“部分-整体”的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. UML图如下: 在Component中声明所有用来管理子对象的方法,其中包括Add.Remove等,这样实现Component接口的所有子类都具备了Add和Remove.这样做的好处就是叶节点和枝节点对于外界没有区别,它们具备 完全一致的行为 接口.但问题也很明显,因为Leaf类本身不具备Add().Remove()方法的 功能,所以实现它是没有意…
原理: 代码清单 Entity public abstract class Entry { public abstract String getName(); public abstract int getSize(); public Entry add(Entry entry) throws FileTreatMentException{ throw new FileTreatMentException(); } public void printList(){ printList("&quo…
1.概述 在面向对象系统中,经常会遇到一些具有"容器性质"的对象,它们自己在充当容器的同时,也充当其他对象的容器. 2.案例 需要构建一个容器系统,需要满足以下几点要求: (1).容器需要能创建和删除子容器 (2).但是整个系统有最终的容器结构一一取名SingleBox (3).容器有自有业务逻辑,能执行指定的操作. 实现如下: /// <summary> /// 容器接口 /// </summary> public interface IBox { void…
Composite 组合模式(结构型模式) 对象容器的问题在面向对象系统中,我们常会遇到一类具有“容器”特征的对象——即他们在充当对象的同时,又是其他对象的容器. public interface IBox { void Process(); } public class SingleBox:IBox { public void Process(){...} } public class ContainerBox:IBox { public void Process(){...} public…
组合模式:树状结构专用模式 代码如下: package com.srr.dp.composite; import java.util.ArrayList; import java.util.List; /** * 节点抽象 */ abstract class Node { private int id; public Node(int id){ this.id = id; } /** * 打印 */ abstract public void print(); } /** * 叶子节点 */ cl…
  简介         <大话设计模式>一书中组合模式的定义为:将对象组合成[树]形结构以表示[部分-整体]的层次结构,组合模式使得用户对[单个对象]和对[组合对象]的使用具有一致性.         当发现需求中是体现部分与整体层次结构,并且你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑组合模式了.         组合模式解耦了客户程序与复杂元素内部结构,从而使客户程序可以向处理简单元素一样来处理复杂元素.         如果你想要创建层次结构…
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina.com 目录 目录组合模式简介案例 组合模式 简介 将对象组合成[树]形结构以表示[部分-整体]的层次结构,组合模式使得用户对[单个对象]和对[组合对象]的使用具有一致性. 组合模式有时候又叫做部分-整体模式,它使我们在树型结构的问题中,模糊了简单元素和复杂元素的概念. 当发现需求中是体现部分与整…
上周面试,面试官问桥接模式是什么,我就举了个例子:手机分为苹果,小米....,每个手机都有视频,游戏...等功能.直观上是一个树形结构.这种情况下,可以用桥接模式,把手机作为接口,苹果,小米等继承手机接口:再用一个手机软件接口,让视频,游戏等继承手机软件接口:在手机中保留软件指针.这样可以让具体的手机和手机软件解耦.然后面试官说,这个case可以用组合模式.我就说不知道组合模式.回来看了一下组合模式. 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合…
1.Composite模式定义 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式,它创建了对象组的树形结构. 这种模式创建了一个包含自己对象组的类.该类提供了修改相同对象组的方式. 将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. 2.示例代码 类图: 类的一览表 定义Entry类 pac…
1. 概述 在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面. 例子1:就是多级树形菜单. 例子2:文件和文件夹目录 2.问题 我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象.我们可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象.客户端代码必须区别对象简单对象和容器对象,而实际上大多数情况下用户认为它们是一样的.对这些类区别使用,使得程序更加复杂.递归使用的时候跟麻烦,而我们如何使用递归组合,使得用户不必对这些类进行区别呢? 3.…
  15.1.解释 概念:将对象组合成树形结构以表示“部分-整体”的层次结构.Composite使得用户对单个对象和组合的使用具有一致性. main(),客户 CCorpNode,抽象基类,实现基本信息 CBranchNode,树枝节点,实现Addordinate()函数和GetSubordinate()函数 CLeafNode,叶子节点,IsLeaf属性总是“true” 说明:组合模式主要是实现在CBranchNode对象里增加对其它对象的数组,如vector<CCorpNode*>,数组里…
1.模式定义: 组合模式属于对象的结构模式,有时又叫做“部分——整体”模式.组合模式将对象组织到树结构中,可以用来描述整体与部分的关系.组合模式可以使客户端将单纯元素与复合元素同等看待. 2.模式特点: 组合模式把部分和整体的关系用树结构表示出来.组合模式使得客户端把一个个单独的成分对象和由它们复合而成的组合对象同等看待. 组合模式可以不提供父对象的管理方法,但是组合模式必须在合适的地方提供子对象的管理方法,诸如:add().remove().以及getChild()等. 组合模式的实现根据所实…
组合模式实际上是一种树形数据结构.以windows目录系统举例,怎么样用java语言描述一个文件夹? 定义一个文件夹类,文件夹类中包含若干个子文件类和若干个文件类. 进一步抽象,把文件夹和文件都看做节点,于是一个文件夹就可以描述为一个节点类,包含若干个子节点. 我们看看组合模式的代码 // 抽象节点 public abstract class Node { protected String name; abstract void add(Node node); abstract void rem…
组合(Composite)模式的其他翻译名称也非常多,比方合成模式.树模式等等.在<设计模式>一书中给出的定义是:将对象以树形结构组织起来,以达成"部分-总体"的层次结构,使得client对单个对象和组合对象的使用具有一致性. 从定义中能够得到使用组合模式的环境为:在设计中想表示对象的"部分-总体"层次结构:希望用户忽略组合对象与单个对象的不同,统一地使用组合结构中的全部对象. 看下组合模式的组成. 1)         抽象构件角色Component:…
组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独的成分对象和由它们组合而成的合成对象同等看待. 抽象构建角色:一个抽象角色,给参加组合的对象规定一个接口,这个接口给出共有的接口及默认行为. 树叶构建角色:代表参加组合的树叶对象,没有子对象,定义参加组合的原始对象行为. 树枝构建角色:代表参加组合的有子对象的对象,并给出树枝构件对象的行为. 对于子…
目录 示例 组合模式 定义 意图 主要解决问题 优缺点 安全式和透明式的组合模式 安全式的合成模式的结构 透明式的合成模式的结构 老和尚和小和尚的故事 示例 有一个绘图系统,可以描绘各种图形,假设现在可以描绘线.长方形.圆形 定义一个抽象类,所有的图形继承此类,完成绘图: public abstract class Graphics { /** 绘图 */ public abstract void draw(); } 线.长方形.圆形分别实现上述抽象类: public class Line ex…
用于描述无限层级的复杂对象,类似于描述资源管理器,抽象出每一个层级的共同特点(文件夹和文件,展开事件) 以前描述一个对象,是将整个对象的全部数据都描述清楚,而组合模式通过在对象中定义自己,描述自己的下一层,通过递归,遍历出所有的底层来描述整个对象,最终形成一个树形结构.…
概述 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦. 意图 将对象组合成树形结构以表示“部分-整体”的层次结构.Composite模式使得用户对单个对象和组合对象的使用具有一致性.[GOF <设计模式>] 结构图 图1 Composite模式结构图 生活中的例子 组合模式将对象组合成树形结构以表示"部分-整体"的层次结构.让用户一致地使用单…
组合模式(Composite Pattern) ——.NET设计模式系列之十一 Terrylee,2006年3月 概述 组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦. 意图 将对象组合成树形结构以表示“部分-整体”的层次结构.Composite模式使得用户对单个对象和组合对象的使用具有一致性.[GOF <设计模式>] 结构图 图1 Composite模式结构图…
23种子GOF设计模式一般分为三类:创建模式.结构模型.行为模式. 创建模式抽象的实例,他们帮助如何创建一个系统独立.这是一个这些对象和陈述的组合. 创建使用继承类的类架构更改实例.的对象类型模型的建立也将委托实例化一个对象. 创建型模式有两个不断出现的主旋律.第一,它们都将关于该系统使用哪些详细的类的信息封装起来.第二,它们隐藏了这些类的实例是怎样被创建和放在一起的.整个系统关于这些对象所知道的是由抽象类所定义的接口.因此.创建型模式在什么被创建.谁创建它,它是怎样被创建的,以及何时创建这些方…
(文章翻译自Java Design Pattern: Composite) 组合模式相对来说是比较简单的,但是它在很多设计中被用到,比如SWT.Eclipse工作空间等等.它创建了一个可以通过唯一的方法访问的继承树. 类图 下面的代码实现了下面树的结构 Java 代码 import java.util.List; import java.util.ArrayList; //Component interface Component { public void show(); } //Compos…
下面来学习一下组合模式. 组合模式概念是什么呢.从别的地方抄来了一些理论. 理论:将对象组合成树形结构以表示"部分-整体"的层次结构.Composite模式使得用户对单个对象和组合对象的使用具有一致性. 拙见:组合模式就是为处理树形结构优化出来的一套理论方法.-_-!!!用递归可以统一处理树形结构中的对象. 下面直接上代码. 总公司  --分公司    --分公司下属分公司     --分公司下属办事处      --分公司办事处 接口类ICompany. import java.ut…
Composite,英语翻译下,复合,组合. 组合模式有时候又叫做部分-整体模式,它使我们在树形结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户与复杂元素的内部结构解耦.将对象组合成树形结构以表示"部分-整体"的层次结构.Composite模式使得用户对单个对象和组合对象的使用具有一致性. 组合模式(Composite)的组成 1.Component 抽象构件接口 为组合的对象声明接口. 在某些情况下实现从此接口派生出的所有类共有…
组合模式(Composite) 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象.组合模式依据树形结构来组合对象,用来表示部分以及整体层次.这种类型的设计模式属于结构型模式,它创建了对象组的树形结构. 这种模式创建了一个包含自己对象组的类.该类提供了修改相同对象组的方式. 我们通过下面的实例来演示组合模式的用法.实例演示了一个组织中员工的层次结构. 介绍 意图:将对象组合成树形结构以表示"部分-整体"的层次结构.组合模式使得用户…
import java.util.LinkedList; /** * 组合模式 * * @author TMAC-J 主要用于树状结构,用于部分和整体区别无区别的场景 想象一下,假设有一批连锁的理发店,你到每个店去理发都是等同的 * 那么假设不用组合模式,你到10家店理发,你需要知道这10家店或者是知道他们的父类店 * 然后new10次来统计消费情况,但是如果用组合模式,你只需要操作根节点就可以了 */ public class ComponentPattern { /** * Componen…
Composite定义:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性. Composite比较容易理解,想到Composite就应该想到树形结构图.组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行.可以用牵一动百来形容. 所以Composite模式使用到Iterator模式,和Chain of Responsibilit…
在阎宏博士的<JAVA与模式>一书中开头是这样描述合成(Composite)模式的: 合成模式属于对象的结构模式,有时又叫做“部分——整体”模式.合成模式将对象组织到树结构中,可以用来描述整体与部分的关系.合成模式可以使客户端将单纯元素与复合元素同等看待. 合成模式 合成模式把部分和整体的关系用树结构表示出来.合成模式使得客户端把一个个单独的成分对象和由它们复合而成的合成对象同等看待. 比如,一个文件系统就是一个典型的合成模式系统.下图是常见的计算机XP文件系统的一部分. 从上图可以看出,文件…