java-设计模式(结构型)-【组合模式】

1.组合模式(Composite)

   定义:组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便

   使用场景:将多个对象组合在一起进行操作,常用于表示树形结构中,例如二叉树,数等,文件目录。

 

2.文件复制例子

   文件类:

//对文件各种操作的接口
public interface FileOperate {
   
	void copy();
}
//file:单个文件
class File implements FileOperate
{   
	//文件名
    private String fileName=null;
    public File(String fileName)
    {
    	this.fileName=fileName;
    }
	@Override
	public void copy() {
		// TODO Auto-generated method stub
		System.out.println("复制“"+fileName+"”文件。。。");
	}
    
    public String getFileName() {
		return fileName;
	}
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
 
}
//文件夹:包含所有的子文件
class FileFolder implements FileOperate
{   
	//文件夹名
    private String folderName=null;
    //所有的子文件
    private ArrayList<File> child=new ArrayList<File>();
    public FileFolder(String folderName)
    {
    	this.folderName=folderName;
    }
    //添加子文件方法
    public void add (File file)
    {
    	child.add(file);
    }
    
    @Override
	public void copy() {
		// TODO Auto-generated method stub
    	System.out.println("当前文件夹:"+folderName);
    	Iterator it=child.iterator();
    	while(it.hasNext())
    	{
    	 File f=(File) it.next();
		  f.copy();
    	}
	}
    
    public String getFolderName() {
		return folderName;
	}
	public void setFolderName(String folderName) {
		this.folderName = folderName;
	}

}

  测试:

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
        FileFolder root=new FileFolder("我的视频");
        File file1=new File("致命ID.avi");
        File file2=new File("两天一夜.rmvb");
        //添加文件
        root.add(file1);
        root.add(file2);
        //复制文件
        root.copy();
	}
}

  运行结果:

当前文件夹:我的视频
复制“致命ID.avi”文件。。。
复制“两天一夜.rmvb”文件。。。

  

 

posted @ 2015-04-17 12:32  beyondbycyx  阅读(138)  评论(0编辑  收藏  举报