java组合模式(Composite)-结构性
2016-07-04 15:40
651 查看
意图
组合模式(合成模式)又叫部分-整体模式。合成模式将对象组织成树结构,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。文件系统
比如,一个文件系统就是一个典型的组合模式系统。文件系统是一个树结构,树的节点有两种,一种是树枝节点(目录),一种是树叶节点(文件)。显然,可以把目录和文件当做同一种对象同等对待和处理。这也就是组合模式的应用。类图与角色(安全式组合模式)
构建接口(Component):参加组合的对象的公共接口。
树叶构件(Leaf):代表参加组合的没有下级子对象的对象。
树枝构建(Composite):代表参加组合的有下级子对象的对象。
实例
//构件接口 interface Resource{//资源 public int getSize(); } //树叶构件 class File implements Resource{//文件 private String name; private int size; public File(String name,int size){ this.name=name; this.size=size; } @Override public int getSize(){ System.out.println("文件"+name+"大小:"+size); return this.size; } } //树枝构件 class Directory implements Resource{ private String name; private List<Resource> resources=new ArrayList<Resource>(); public Directory(String name){ this.name=name; } @Override public int getSize(){ int size=0; for(Resource r:resources){ size+=r.getSize(); } System.out.println("文件夹"+name+"大小:"+size); return size; } public void add(Resource r){ resources.add(r); } public void remove(Resource r){ resources.remove(r); } public List<Resource> getResourcess(){ return resources; } }
class test { public static void main (String[] args) throws java.lang.Exception{ Directory diskC=new Directory("diskC"); File boot=new File("boot.ini",10); diskC.add(boot); Directory programFiles=new Directory("programFiles"); File qq=new File("qq.data",200); programFiles.add(qq); diskC.add(programFiles); Directory windows=new Directory("windows"); File explore=new File("explore.exe",300); windows.add(explore); Directory config=new Directory("config"); File qqConfig=new File("qqConfig.xml",3); config.add(qqConfig); windows.add(config); diskC.add(windows); System.out.println("C盘大小为:"+diskC.getSize()); } }
相关文章推荐
- JAVA-IO之读取媒体文件(图片、音频、视频)
- 利用反射实现简单的Spring注解注入实例
- java中多线程中Runnable接口和Thread类介绍
- JAVA调用SAP端RFC接口
- java消息队列使用场景
- Java中的substring真的会引起内存泄露么?
- Thinking in Java 第6章 访问权限控制 【Java 访问权限修饰词】
- JavaEE的核心技术简介
- JAVA:三种集合LIST、SET、MAP
- javax.imageio.IIOException: Can't create output stream解决方法
- Thinking in Java 第6章 访问权限控制 【包:库单元】
- Struts小总结
- 大数求和(A+B) JAVA
- java 消息队列学习
- java设计模式之------装饰者模式
- Java卫语句
- eclipse超级实用快捷键
- spring的IOC和AOP
- Palindrome Number(java)
- Java服务器热部署的实现原理