实验10:组合模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解组合模式的动机,掌握该模式的结构;

2、能够利用组合模式解决实际问题。

 

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

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

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

2.提交源代码;

3.注意编程规范。

package rjsj.no10;

public class Client {

    public static void main(String[] args) {

        AbstractFile obj1,obj2,obj3,obj4,obj5;

        Folder plate1,plate2,plate3;

        obj1 = new ImageFile("图片文件1");

        obj2 = new TextFile("文本文件1");

        plate1 = new Folder("父文件夹1");

        plate1.add(obj1);

        plate1.add(obj2);

        obj3 = new VideoFile("视频文件1");

        obj4 = new Folder("子文件夹1");

        plate2 = new Folder("父文件夹2");

        plate2.add(obj3);

        plate2.add(obj4);

        obj5 = new TextFile("文本文件2");

        plate3 = new Folder("父文件夹3");

        plate3.add(obj5);

        plate3.add(plate1);

        plate3.add(plate2);

        plate3.display();

    }

}

package rjsj.no10;

import java.util.ArrayList;

public class Folder extends AbstractFile{

    private String fileName;

    private ArrayList fileList=new ArrayList();

    public Folder(String filename) {

        this.fileName=new String();

        this.fileName=filename;

    }

    @Override

    public void add(AbstractFile element) {

        fileList.add(element);

        System.out.println("新建文件夹");

    }

    @Override

    public void remove(AbstractFile element) {

        fileList.remove(element);

        System.out.println("删除文件夹");

    }

    @Override

    public void display() {

        for (Object obj:fileList){

            ((AbstractFile)obj).display();

        }

        System.out.println("打开文件夹");

    }

} package rjsj.no10;

public class ImageFile extends AbstractFile{

    private String fileName;

    public ImageFile(String filename) {

        this.fileName=new String();

        this.fileName=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);

        System.out.println("打开图片文件");

    }

}

package rjsj.no10;

public class TextFile extends AbstractFile{

    private String fileName;

    public TextFile(String filename) {

        this.fileName=new String();

        this.fileName=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);

        System.out.println("打开文本文件");

    }

}

package rjsj.no10;

public class VideoFile extends AbstractFile{

    private String fileName;

    public VideoFile(String filename) {

        this.fileName=new String();

        this.fileName=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);

        System.out.println("播放视频文件");

    }

}

package rjsj.no10;

public abstract class AbstractFile {

    public abstract void add(AbstractFile element);

    public abstract void remove(AbstractFile element);

    public abstract void display();

}

 

posted @   会秃头的小白  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
  1. 1 原来你也在这里 周笔畅
  2. 2 世间美好与你环环相扣 柏松
  3. 3 起风了 吴青峰
  4. 4 极恶都市 夏日入侵企划
极恶都市 - 夏日入侵企划
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 王星

作曲 : 灰鸿啊/皮皮

编曲 : 夏日入侵企画

制作人 : 邢硕

节奏吉他 : 肯尼

主音吉他 : 张伟楠

贝斯 : 皮皮

鼓 : 海鑫

和声 : 邢硕

音效制作 : 邢硕

录音 : 邢硕/夏国兴

混音 : 于昊

特别鸣谢 : 张伟楠

这城市的车流和这地表的颤抖

像一颗石子落入地心之后泛起的温柔

暗涌

河水流过转角她的楼

被梦魇

轻声呓语唤醒身后的幼兽

失效感官焦灼只剩下

麻木愚钝无从感受

共同支撑全都瓦解

只是我们现在都

已忘记到底是

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去陈旧的还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

眼看这情节开始变旧

所有的城池已失守

最终无法占有

无眠辗转

伴着人间破碎的旧梦

像繁星

退却后只剩下混沌的夜空

炙热

掩盖风声鹤唳的担忧

把所有失落无助反手推入

无尽的白昼

失效感官焦灼只剩下

麻木愚钝无从感受

共同支撑全都瓦解

只是我们现在都已经忘记到底是

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

眼看这情节开始变旧

所有的城池早已失守

惶恐难以接受

缠绵往复不肯放手

最终无法占有

谁隐藏春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁 灭 即 拯 救

谁掠夺春秋

谁在大雨之后

把旗帜插在最高的楼

过去的陈旧还在坚守

内心已腐朽

摇摇欲坠不停退后

毁灭即拯救

夏日掠夺春秋

结局无法看透

明知城池已失守

缠绵往复不肯放手

最终无法占有

点击右上角即可分享
微信分享提示