- 浏览: 831389 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
定义:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.
Composite比较容易理解,想到Composite就应该想到树形结构图。组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时,Composite将遍历(Iterator)整个树形结构,寻找同样包含这个方法的对象并实现调用执行。可以用牵一动百来形容。
所以Composite模式使用到Iterator模式,和Chain of Responsibility模式类似。
Composite好处:
1.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码。
如何使用Composite?
首先定义一个接口或抽象类,这是设计模式通用方式了,其他设计模式对接口内部定义限制不多,Composite却有个规定,那就是要在接口内部定义一个用于访问和管理Composite组合体的对象们(或称部件Component).
示例代码:
package composite_tree; import java.util.ArrayList; public abstract class Component { public String name; public ArrayList<Component> list; public abstract void add(Component component); public abstract void remove(Component component); public abstract void display(); public Component(final String _name) { this.name = _name; } }
package composite_tree; public class Leaf extends Component { public Leaf(String _name) { super(_name); } @Override public void add(Component component) { System.out.println("you can't add component to a Leaf object"); } @Override public void remove(Component component) { System.out.println("you can't remove component to a Leaf object"); } @Override public void display() { System.out.println("|--" + name); } }
package composite_tree; import java.util.ArrayList; public class ConcreteComponent extends Component { public ConcreteComponent(String _name){ super(_name); list=new ArrayList<Component>(); } @Override public void add(Component component) { list.add(component); } @Override public void remove(Component component) { if(list.contains(component)){ list.remove(component); } } @Override public void display() { System.out.println(this.name); for(Component mc:list){ mc.display(); } } }
package composite_tree; public class Client { public static void main(String[] args) { Leaf leaf = new Leaf("计算机学院"); Leaf leaf2 = new Leaf("文学院"); //创建一级分类 ConcreteComponent con = new ConcreteComponent("院系"); con.add(leaf); con.add(leaf2); Leaf leaf3 = new Leaf("学生会"); Leaf leaf4 = new Leaf("团总支"); //创建一级分类 ConcreteComponent con2 = new ConcreteComponent("校团委"); con2.add(leaf3); con2.add(leaf4); Leaf leaf5 = new Leaf("报社"); Leaf leaf6 = new Leaf("外联部"); //创建二级分类 ConcreteComponent secondcon = new ConcreteComponent("学生会"); secondcon.add(leaf5); secondcon.add(leaf6); //在一级分类(校团委)下添加二级分类学生会 con2.add(secondcon); //将所有的分类添加到root下 ConcreteComponent root = new ConcreteComponent("root"); root.add(con); root.add(con2); //显示节目列表 root.display(); } }
结果:
root 院系 |--计算机学院 |--文学院 校团委 |--学生会 |--团总支 学生会 |--报社 |--外联部
发表评论
-
微信JS
2013-10-26 21:17 2045<div class="iteye-blog- ... -
ubuntu下MySQL用source命令导入sql文件出现乱码解决方法
2012-11-18 23:46 1488首先建立数据库的时候指明数据库编码如: CREA ... -
RandomAccessFile
2012-10-18 18:16 946public void run() { try { ... -
java中多种方式读文件
2012-10-18 16:53 930java中多种方式读文件一、多种方式读文件内容。1、按字节读取 ... -
FileChannelMain
2012-10-15 18:12 1076package scan; import java ... -
Apache FtpServer在64位系统下服务不能启动解决方法
2012-06-10 21:29 6802Apache FTPServer是一款用Java开发的 ... -
Java 集合类
2012-06-07 22:03 1573Java 集合类 1. 为什么要了解J ... -
short、int、long与byte之间的转换工具类
2012-05-31 11:05 4478/** * 各基础类型与byte之间的转换 * ... -
Linux Mint 13 配置JAVA 环境
2012-05-24 22:35 26210.1--下载 JAVA ... -
FatJar+Exe4j+Inno Setup 生成可执行的exe文件
2012-04-17 10:54 14281、fatjar 是Eclipse的一个免费的插件。它的 ... -
JPanel JTextField add Focus 获取焦点解决方案
2012-03-30 21:29 2980public class TabPagePanel ex ... -
JList List<E> Page 分页
2012-03-30 21:28 1733package view.retrieve.comps. ... -
JButton setAction的BUG
2012-03-23 10:53 1278今天在使用JButton的时候,想用setText()setI ... -
自定义JTabbedPane皮肤
2012-03-22 12:05 4711package ui; import java.awt. ... -
两个工具类
2012-03-17 21:27 867package com.retrieve.utils; ... -
两个工具类
2012-03-17 21:27 0package com.retrieve.utils; ... -
mysql、sqlserver、oracle分页,java分页统一接口实现
2012-03-13 17:56 0定义: pageStart 起始页,pageEnd 终止页, ... -
Invalid command: InetLoad::load
2012-03-06 16:41 1288Invalid command: InetLoad::load ... -
NIO: High Performance File Copying
2012-03-01 17:25 1154In a previous tip, I discussed ... -
自定义JList
2012-02-03 15:39 775自定义JList。
相关推荐
23种设计模式之八(结构型模式)Composite模式
设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不是说记住了23种(或更多)设计场景和解决策略(实际上这也是很重要的一笔财富),实际接受的是一种思想的熏陶和洗礼,等这种思想...
C++设计模式课件20_Composite_组合模式.pdf
主要介绍了Java设计模式之组合模式(Composite模式)介绍,Composite定义:将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性,需要的朋友可以参考下
RFC浏览器在此RFC浏览器中,您可以: 在顶部的文本字段中按编号查找RFC 如果在顶部的文本字段中输入字符串,则按... 此外,通过Swing库了解Composite模式设计。技术领域Java摇摆汤参考书目抢先设计模式-O'Reilly Media
2.4 Composite模式 2.5 Flyweight模式 2.6 Facade模式 2.7 Proxy模式 3 行为模式.....55 3.1 Template模式 3.2 Strategy模式 3.3 State模式 3.4 Observer模式 3.5 Memento模式 3.6 Mediator模式 3.7 Command模式...
Design Pattern: Composite 模式 40 Design Pattern: Decorator 模式 41 Design Pattern: Facade 模式 44 Design Pattern: Flyweight 模式 46 Design Pattern: Proxy 模式(一) 48 Design Pattern: Proxy 模式(二...
设计模式之 Composite(组合) 就是将类用树形结构组合成一个单位.你向别人介绍你是某单位,你是单位中的一个元素,别人和你做买卖,相当于 和单位做买卖。文章中还对 Jive再进行了剖析。 设计模式之 Decorator(装饰...
摘要:数字地图制图实际上是...文中从数字地图制图软件的需求出发,对制图软件设计中常用设计模式(包括MVC模式、OBSERVER模式、COMPOSITE模式、COMMAND模式)的一般原理和结构进行简要介绍,并通过实例进行具体的说明。
九、 一个实际应用Composite模式的例子 98 C#设计模式(12)-Decorator Pattern 101 一、 装饰(Decorator)模式 101 二、 装饰模式的结构 102 三、 装饰模式示例性代码 103 四、 装饰模式应当在什么情况下使用 106...
九、 一个实际应用Composite模式的例子 C#设计模式(12)-Decorator Pattern 一、 装饰(Decorator)模式 二、 装饰模式的结构 三、 装饰模式示例性代码 四、 装饰模式应当在什么情况下使用 五、 装饰模式...
第23章 COMPOSITE模式 第24章 OBSERVER模式—回归为模式 第25章 ABSTRACT SERVER模式、ADAPTER模式和BRIDGE模式 第26章 PROXY模式和STAIRWAY TO HEAVEN模式:管理第三方API 第27章 案例研究:气象站 第六部分 ETS...
将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。
设计模式中的Composite模式,VC源码Composite.rar,希望我能把23个模式写全,O(∩_∩)O~
5.2.2 Composite模式 5.2.3 Layer Supertype模式 5.3 应用设计原则 5.3.1 依赖倒置原则和依赖注入模式 5.3.2 接口分离原则 5.3.3 里氏替换原则 5.4 小结 第6章 服务层 6.1 服务层介绍 6.1.1 SOA 6.1.2 ...
第二十三章 COMPOSITE模式 第二十四章 OBSERVER模式——回归为模式 第二十五章 ABSTRACT SERVER模式、ADAPTER模式和BRIDGE模式 第二十六章 PROXY模式和STAIRWAY TO HEAVEN模式:管理第三方API 第二十七章 案例研究:...
”“……”,MM 都会用 Composite 模式了,你会了没有? 合成模式:合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式就 合成模式 是一个处理对象的树结构的模式。 合成模式把部分与整体的...
第26章 薪水支付案例研究:第一次迭代开始 第27章 薪水支付案例研究:实现 第四部分 打包薪水支付系统 第28章 包和组件的设计原则 第29章 FACTORY模式 第30章 薪水支付案例研究:包分析 第31章 COMPOSITE模式 第32章...
第9章 Dangling Composite模式 9.1 Dangling Comp osite bug模式简述 9.1.1 症状 9.1.2 起因 9.1.3 解决方法和预防 措施 9.2 小结 第10章 Null Flag模式 10.1 Null Flag bug模式简述 10.1.1 症状 10.1.2 ...