组合模式
[实验任务一]:组合模式
用透明组合模式实现教材中的“文件夹浏览”这个例子。
实验要求:
1.文件的执行不需真正实现,只需简单提示即可;
2.提交源代码;
3.注意编程规范。
- 类图:
- 源代码
import java.util.ArrayList;
import java.util.List;
// 抽象组件类,表示文件和文件夹的通用接口
abstract class Component {
protected String name;
public Component(String name) {
this.name = name;
}
// 显示文件或文件夹结构
public abstract void display(String indent);
}
// 具体的文件类
class File extends Component {
public File(String name) {
super(name);
}
@Override
public void display(String indent) {
System.out.println(indent + "- 文件: " + name);
}
}
// 具体的文件夹类
class Folder extends Component {
private List<Component> components = new ArrayList<>();
public Folder(String name) {
super(name);
}
// 添加子组件(文件或文件夹)
public void add(Component component) {
components.add(component);
}
// 删除子组件
public void remove(Component component) {
components.remove(component);
}
@Override
public void display(String indent) {
System.out.println(indent + "+ 文件夹: " + name);
for (Component component : components) {
component.display(indent + " ");
}
}
}
// 客户端代码
public class Main {
public static void main(String[] args) {
// 创建根文件夹
Folder root = new Folder("根目录");
// 在根目录下添加文件和文件夹
root.add(new File("文件1.txt"));
root.add(new File("文件2.txt"));
Folder subFolder1 = new Folder("子文件夹1");
subFolder1.add(new File("文件3.txt"));
root.add(subFolder1);
Folder subFolder2 = new Folder("子文件夹2");
subFolder2.add(new File("文件4.txt"));
subFolder1.add(subFolder2);
// 显示整个文件夹结构
root.display("");
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端