组合模式实例之文件浏览

本文介绍了如何利用组合模式来实现文件浏览功能。文件类型包括文本文件、图片文件和视频文件,不同类型的文件浏览方式不同。文件夹的浏览即是对其中包含文件的浏览。客户端可以统一处理文件和文件夹,无需关注它们的具体类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.实例说明:

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

二.实例类图:


代码:

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();
		
	}
}






 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值