组合模式实例之文件浏览

原创 2016年05月31日 10:36:13

一.实例说明:

       文件有不同的类型,不同类型的文件其浏览方式有所区别,如文本文件和图片文件的浏览方式就不同。对文件夹的浏览实际上就是对其中所包含文件的浏览,而客户端可以一致地对文件和文件进行操作,无须关心它们的区别。使用组合模式来浏览文件的浏览操作。

二.实例类图:


代码:

package MyElement;

public abstract class AbstractFile 
{
	public abstract void add(AbstractFile element);
	public abstract void remove(AbstractFile element);
	public abstract void display();
}

package feaffile;

class Video:

import MyElement.AbstractFile;

public class VideoFile extends AbstractFile
{
	private String fileName;
	public VideoFile(String filename)
	{
		this.fileName=new String();
		this.fileName=filename;
	}
	public void add(AbstractFile element)
	{
		System.out.println("VideoFile:add");
	}
	public void remove(AbstractFile element)
	{
		System.out.println("VideoFile:remove");
	}
	public void display()
	{
		System.out.println(fileName);
		System.out.println("VideoFile:display");
	}
}

class TextFile:

import MyElement.AbstractFile;

public class TextFile extends AbstractFile
{
	private String fileName;
	public TextFile(String filename)
	{
		this.fileName=new String();
		this.fileName=filename;
	}
	public void add(AbstractFile element)
	{
		System.out.println("TextFile:add");
	}
	public void remove(AbstractFile element)
	{
		System.out.println("TextFile:remove");
	}
	public void display()
	{
		System.out.println(fileName);
		System.out.println("TextFile:display");
	}
}

class ImageFile:

</pre><pre class="java" name="code">import MyElement.AbstractFile;

public class ImageFile extends AbstractFile
{
	private String fileName;
	public ImageFile(String filename)
	{
		this.fileName=new String();
		this.fileName=filename;
	}
	public void add(AbstractFile element)
	{
		System.out.println("ImageFile:add");
	}
	public void remove(AbstractFile element)
	{
		System.out.println("ImageFile:remove");
	}
	public void display()
	{
		System.out.println(fileName);
		System.out.println("ImageFile:display");
	}
	
}

class Floder:

import java.util.*;

import MyElement.AbstractFile;

public class Folder extends AbstractFile
{
	private String fileName;
	private ArrayList fileList=new ArrayList();
	public Folder(String filename)
	{
		this.fileName=new String();
		this.fileName=filename;
	}
	public void add(AbstractFile element)
	{
		fileList.add(element);
		System.out.println("Folder:add");
	}
	public void remove(AbstractFile element)
	{
		fileList.remove(element);
		System.out.println("Folder:remove");
	}
	public void display()
	{
		for(Object object:fileList)
		{
			((AbstractFile)object).display();
		}
		System.out.println("Folder:display");
	}
}

package Client;

class Client:

import MyElement.AbstractFile;
import feaffile.Folder;
import feaffile.ImageFile;
import feaffile.TextFile;
import feaffile.VideoFile;
public class Client 
{
	public static void main(String a[])
	{
		AbstractFile obj1,obj2,obj3,obj4,obj5;
		Folder plate1,plate2,plate3;
		obj1=new ImageFile("aaa");
		obj2=new TextFile("bbb");
		plate1=new Folder("ccc");
		plate1.add(obj1);
		plate1.add(obj2);
		
		obj3=new VideoFile("ddd");
		obj4=new VideoFile("eee");
		plate2=new Folder("fff");
		plate2.add(obj3);
		plate2.add(obj4);
		
		obj5=new ImageFile("ggg");
		plate3=new Folder("hhh");
		plate3.add(plate1);
		plate3.add(plate2);
		plate3.add(obj5);
		
		plate3.display();
		
	}
}






 

相关文章推荐

组合模式

一、组合模式概述   组合模式是用面向对象的方式来组合多个对象形成树形结构以表示“整体—部分”的结构层次,它对单个对象(叶子对象)和组合对象(容器对象)的操作具有一致性。其核心类是一个抽象类,通常这...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Java设计模式之《组合模式》及应用场景(遍历指定路径下的文件目录和文件为例子)

Java设计模式之《组合模式》及应用场景 出处地址http://www.cnblogs.com/V1haoge/p/6489827.html   组合模式,就是在一个对象中包含其他对象,这...

设计模式之组合模式-树形结构的处理

一、描述:      对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象)并调用执行,牵一而动百,其中使用了...

使用组合模式与迭代器模式遍历文件夹中所有文件

我写这个例子只是想练习组合模式和迭代器模式的使用,模仿了headfirst设计模式的写法,解决了里面的bug,自己mark一下,对于java初学者不是好理解,so~多看几遍总归有些收获,高手就轻拍吧....

树形结构的处理——组合模式(四):透明组合模式与安全组合模式

11.4 透明组合模式与安全组合模式通过引入组合模式,Sunny公司设计的杀毒软件具有良好的可扩展性,在增加新的文件类型时,无须修改现有类库代码,只需增加一个新的文件类作为AbstractFile类的...
  • will130
  • will130
  • 2016年01月19日 11:06
  • 523

设计模式之组合模式

模式动机:        对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象,如子文件夹和文件)并调用执...

java Script 组合模式 简单实例

(fu
  • CuiTrek
  • CuiTrek
  • 2016年12月15日 02:09
  • 100

组合模式和命令模式的联用实例

练习http://blog.csdn.net/lovelion/article/details/8806677 Sunny软件公司欲开发一个基于Windows平台的公告板系统。该系统提供了一个主...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:组合模式实例之文件浏览
举报原因:
原因补充:

(最多只允许输入30个字)