组合模式

[实验任务一]:组合模式

用透明组合模式实现教材中的“文件夹浏览”这个例子。

实验要求:

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

2.提交源代码;

3.注意编程规范。

 

  1. 类图:

 

 

  1. 源代码

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("");

    }

}

posted @   平安喜乐×  阅读(2)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示