组合模式实例之文件浏览

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






 

Java 设计模式——组合模式

有时我们可能会被要求处理一个层级结构明显的对象,比如上下级的公司员工、比如层级嵌套的文件夹,还有丰富多彩的美食菜单。可是,我们可能要屡试不爽地编写深度搜索代码、要小心翼翼地编写递归逻辑。现在你可以忘掉...
  • u013761665
  • u013761665
  • 2016年05月17日 17:39
  • 7810

java组合模式实例

组合模式,是由GoF提出的23种软件设计模式的一种。其定义为:将对象组合成树形结构以表示“整体—部分”的层次结构。Composite模式使单个对象和组合对象的使用具有一致性。 Composite模式...
  • miliang1688
  • miliang1688
  • 2014年04月06日 22:05
  • 536

【js设计模式笔记---组合模式】

组合模式 组合模式是一种专为创建Web上动态用户界面而量身定制的模式。使用这种模式,可以用一条命令在多个对象上激发复杂的或递归的行为。 组合模式为操劳过度的javascript程序员带来了两大的好处 ...
  • pigpigpig4587
  • pigpigpig4587
  • 2014年05月19日 15:42
  • 849

JAVA设计模式初探之组合模式

先看看组合模式的定义吧:“将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。”    就拿剪发办卡的事情来分析一下吧。    首先,一张卡可...
  • jason0539
  • jason0539
  • 2014年03月31日 08:40
  • 22693

设计模式——组合模式+案例

先给个代码地址吧 https://github.com/yyfyyf1994/knowledge/tree/master/src/yyf/designpatterns/composite ...
  • qq_18860653
  • qq_18860653
  • 2016年11月21日 16:51
  • 701

设计模式之七大结构型模式(附实例和详解)

博主在大三的时候有上过设计模式这一门课,但是当时很多都基本没有听懂,重点是也没有细听,因为觉得没什么卵用,硬是要搞那么复杂干嘛。因此设计模式建议工作半年以上的猿友阅读起来才会理解的比较深刻。当然,你没...
  • mbshqqb
  • mbshqqb
  • 2017年11月23日 14:28
  • 155

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

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

c++设计模式之组合模式

组合模式(Composite Pattern)-结构型 意图:组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。 举例:组合模式让...
  • bbs375
  • bbs375
  • 2016年07月25日 19:09
  • 536

设计模式--迭代器模式与组合方法模式

迭代器模式是将对对象的遍历封装成迭代器,对外部隐藏对象遍历的具体实现。 而组合方法是实现对处于不同层次的同种对象提供一致性的遍历方法。 首先我们开始讨论迭代器模式。 我们在实践过程中可以遇到这样的...
  • u010953266
  • u010953266
  • 2015年02月15日 19:29
  • 601

安卓开发实例二:文件浏览器

概述: 需求:显示手机内所有文件、文件夹,显示文件内容,对文件拷贝、删除等。 实现:遍历文件,显示文件信息到ListView中;读取文件,显示到界面上;ListView添加菜单,处理文件操作。 ...
  • mfcing
  • mfcing
  • 2015年11月18日 20:47
  • 2327
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:组合模式实例之文件浏览
举报原因:
原因补充:

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