组合模式

本文介绍了一种使用组合模式处理文件和文件夹的方式。通过定义统一的文件接口,实现了对单个文件和文件夹中多个文件的统一操作。具体实现包括 ImageFile、TextFile 和 VideoFile 类,以及 Folder 类,后者可以包含多种文件类型,并能够递归地进行处理。

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

/**
 * 组合模式
 */
public interface AbstractFile {
void killFile();
}

class ImageFile implements AbstractFile{
private String name;

public ImageFile(String name) {
this.name = name;
}

public void killFile() {
System.out.println("处理"+name+"图像文件");
}
}

class TextFile implements AbstractFile{
private String name;

public TextFile(String name) {
this.name = name;
}

public void killFile() {
System.out.println("处理"+name+"文本文件");
}
}

class VideoFile implements AbstractFile{
private String name;

public VideoFile(String name) {
this.name = name;
}

public void killFile() {
System.out.println("处理"+name+"视频文件");
}
}


class Folder implements AbstractFile{
private String name;
private List<AbstractFile> list = new ArrayList<AbstractFile>();

public Folder(String name) {
this.name = name;
}

public void add(AbstractFile file) {
list.add(file);
}

public void remove(AbstractFile file) {
list.remove(file);
}

public AbstractFile getChild(int index) {
return list.get(index);
}

@Override
public void killFile() {
for(AbstractFile file : list) {
file.killFile();
}
}

}


测试类
public class Text {
public static void main(String[] args) {
AbstractFile f2,f3,f4,f5;
Folder f1 = new Folder("我的收藏");
f2 = new ImageFile("老大的头像");
f3 = new TextFile("Hello.txt");

f1.add(f2);
f1.add(f3);
f1.killFile();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值