Java与设计模式-组合模式

组合模式(Composite)属于结构性模式,它描述了对象间的组合关系。 对象间常常通过树结构来组织(包含)起来,以实现整体-部分的层次结构。整体上可以看做是一个组合对象。 抛却各种复杂的术语,组合模式的特点是: 对象通过实现(继承)统一的接口(抽象类),调用者对单一对象和组合对象的操作具有一致性。 组合模式很常见,Java的容器类(比如ArrayList)都实现了组合模式。 我们平常操作最多的文件(夹)就是组合模式的最好例子。文件系统是树形层次结构,并且文件和文件夹提供给用户的一些操作是相同的,比如复制。于是,可以通过一个统一的接口将文件和文件夹统一起来,对用户提供一致的操作,屏蔽不同的复制实现过程。我们在复制文件夹的时候,操作系统实现了对文件夹内的所有文件和文件夹的复制,即实现了组合对象的整体复制,而不是一个空的文件夹;这和我们复制单个文件的体验是一致的。这便是组合模式的妙处。 完整的模拟代码如下: package com.csufox.Composite; import java.util.ArrayList; interface Node{ public void copy(); //定义统一的接口:复制 } class Folder implements Node{ private String folderName; private ArrayList nodeList = new ArrayList(); //用于存储文件夹下的文件夹或文件的信息 public Folder(String folderName){ this.folderName = folderName; } public void add(Node node){ //增加文件或文件夹 nodeList.add(node); } public void copy(){ //文件夹复制操作实现递归 System.out.println("复制文件夹:" + folderName); for(int i=0;i

你可能感兴趣的:(Java与设计模式-组合模式)