2024.11.7
设计模式实验十
软件设计 石家庄铁道大学信息学院
实验10:组合模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解组合模式的动机,掌握该模式的结构;
2、能够利用组合模式解决实际问题。
[实验任务一]:组合模式
用透明组合模式实现教材中的“文件夹浏览”这个例子。
实验要求:
1.文件的执行不需真正实现,只需简单提示即可;
2.提交源代码;
FileComponent.java
public interface FileComponent {
void showDetails(); // 展示文件或文件夹的基本信息
} public interface FileComponent {
void showDetails(); // 展示文件或文件夹的基本信息
}
File.java
public class File implements FileComponent {
private String name;
public File(String name) {
this.name = name;
}
@Override
public void showDetails() {
System.out.println("File: " + name);
}
}
Folder.java
import java.util.ArrayList;
import java.util.List;
public class Folder implements FileComponent {
private String name;
private List<FileComponent> components = new ArrayList<>();
public Folder(String name) {
this.name = name;
}
public void addComponent(FileComponent component) {
components.add(component);
}
public void removeComponent(FileComponent component) {
components.remove(component);
}
@Override
public void showDetails() {
System.out.println("Folder: " + name);
for (FileComponent component : components) {
component.showDetails();
}
}
}
Main.java
public class Main {
public static void main(String[] args) {
// 创建文件
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
File file3 = new File("file3.txt");
// 创建文件夹
Folder folder1 = new Folder("Folder1");
folder1.addComponent(file1);
Folder folder2 = new Folder("Folder2");
folder2.addComponent(file2);
folder2.addComponent(file3);
Folder rootFolder = new Folder("RootFolder");
rootFolder.addComponent(folder1);
rootFolder.addComponent(folder2);
// 显示文件夹结构
rootFolder.showDetails();
}
}
3.注意编程规范。