首页 > 其他分享 >实验10:组合模式

实验10:组合模式

时间:2023-11-29 21:44:06浏览次数:27  
标签:10 组合 void AbstractFile System fileName 实验 println public

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

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

}

 

标签:10,组合,void,AbstractFile,System,fileName,实验,println,public
From: https://www.cnblogs.com/lin513/p/17865970.html

相关文章

  • 《初学C语言第10天》
    ////------------------------------------------------------------例题1,2//1////给出一百分制成绩,要求输出成绩等级'A'、B、C、D'、E。////90分以上为'A',80~89分为B.70~79分为C,60~69分为D60分以下为E。//#define_CRT_SECURE_NO_WARNINGS1//#include<stdio.h>//int......
  • 实验5
    实验任务1.1实验任务1.2实验任务2.1实验任务2.2实验任务3实验任务4.1 实验任务4.2 实验任务5.1实验任务5.2 实验任务6  实验任务7 ......
  • Codeforces Round 910 (Div. 2)
    https://codeforces.com/contest/1898C题可以造一个大小为4的环,然后再造一个来回,这样就解决了%4=0,%4=2的情况,而奇数的情况显然无解。#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<map>#include<vector>#include<set>#includ......
  • IIS 10的重大更新通常会随着Windows Server和Windows 10的累积更新一起发布,这些更新可
    IIS10是WindowsServer 和Windows10操作系统中内置的Web服务器角色。针对IIS10的重大更新通常会随着WindowsServer和Windows10的累积更新一起发布,这些更新可能包括性能改进、安全性增强、新功能和修复程序。在过去的更新中,IIS10可能会获得以下方面的重大改进:安全性增......
  • 实验八第二部分所需要的依赖
    <repositories><repository><id>alimaven</id><name>aliyunmaven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url></repository>......
  • 大型数据库实验八--Flink初级编程实践
    ......
  • 将1234数字,组成不重复的3数字组合,并统计组合个数
    total=0forainrange(1,5):forbinrange(1,5):forcinrange(1,5):ifa!=banda!=candb!=c:total=total+1print(a,b,c)print(total) ......
  • Unity版本使用情况统计(更新至2023年10月)
    本期UWA发布的内容是第十三期Unity版本使用统计,统计周期为2023年5月至2023年10月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势,了解近半年来哪些Unity版本的使用概率更高。2023年5月-2023年10月版本分布 以近半年的数据统计来......
  • 虚拟机进行实验八遇到的坑(一)
    idea依赖下载报错//引入阿里云镜像下载就ok啦~~~<repositories><repository><id>alimaven</id><name>aliyunmaven</name><url>https://maven.aliyun.com/nexus/content/groups/public/</url......
  • 2023-2024-120231329《计算机基础与程序设计》第10周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK10这个作业的目标计算机科学概论第12,13,14章云班课测试《C语言程序设计》第9章并完成云班课测试作......