码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-04-17 13:44:24      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:

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”文件。。。

  

 

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

标签:

原文地址:http://www.cnblogs.com/beyondbycyx/p/4434563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!