11.19

实验10:组合模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解组合模式的动机,掌握该模式的结构;
2、能够利用组合模式解决实际问题。

[实验任务一]:组合模式
用透明组合模式实现教材中的“文件夹浏览”这个例子。
实验要求:

  1. 文件的执行不需真正实现,只需简单提示即可;

  2. 提交源代码;

package touming;



// 抽象文件类
public abstract class AbstractFile {
    protected String fileName;

    public AbstractFile(String fileName) {
        this.fileName = fileName;
    }

    public abstract void add(AbstractFile element);
    public abstract void remove(AbstractFile element);
    public abstract void display();
}

package touming;

// 客户端测试代码
public class Client {
    public static void main(String[] args) {
        // 创建根文件夹
        Folder rootFolder = new Folder("根文件夹");
        
        // 创建子文件夹
        Folder subFolder = new Folder("子文件夹");
        
        // 创建文件
        AbstractFile image = new ImageFile("图片.jpg");
        AbstractFile text = new TextFile("文档.txt");
        AbstractFile video = new VideoFile("视频.mp4");
        
        // 组织结构
        rootFolder.add(subFolder);
        rootFolder.add(image);
        subFolder.add(text);
        subFolder.add(video);
        
        // 显示文件夹结构
        rootFolder.display();
    }
}

package touming;

// 视频文件类
public class VideoFile extends AbstractFile {
    public VideoFile(String fileName) {
        super(fileName);
    }
    
    @Override
    public void add(AbstractFile element) {
        System.out.println("不支持该方法");
    }
    
    @Override
    public void remove(AbstractFile element) {
        System.out.println("不支持该方法");
    }

    
    @Override
    public void display() {
        System.out.println("播放视频文件: " + fileName);
    }
}

package touming;

// 文本文件类
public class TextFile extends AbstractFile {
    public TextFile(String fileName) {
        super(fileName);
    }
    
    @Override
    public void add(AbstractFile element) {
        System.out.println("不支持该方法");
    }
    
    @Override
    public void remove(AbstractFile element) {
        System.out.println("不支持该方法");
    }
    
    @Override
    public void display() {
        System.out.println("显示文本文件: " + fileName);
    }
}
package touming;
// 文件夹类
import java.util.ArrayList;
import java.util.List;

public class Folder extends AbstractFile {
    private List<AbstractFile> fileList = new ArrayList<>();
    
    public Folder(String fileName) {
        super(fileName);
    }
    
    @Override
    public void add(AbstractFile element) {
        fileList.add(element);
    }
    
    @Override
    public void remove(AbstractFile element) {
        fileList.remove(element);
    }
    
    @Override
    public void display() {
        System.out.println("Folder: " + fileName);
        for (AbstractFile file : fileList) {
            file.display();
        }
    }
}
package touming;

// 图像文件类
public class ImageFile extends AbstractFile {
    public ImageFile(String fileName) {
        super(fileName);
    }
    
    @Override
    public void add(AbstractFile element) {
        System.out.println("不支持该方法");
    }
    
    @Override
    public void remove(AbstractFile element) {
        System.out.println("不支持该方法");
    }
    
    @Override
    public void display() {
        System.out.println("显示图像文件: " + fileName);
    }
}

3.注意编程规范。

posted @ 2024-11-18 08:37  aallofitisst  阅读(3)  评论(0编辑  收藏  举报