11.19

news/2024/11/18 8:37:38/文章来源:https://www.cnblogs.com/wlxdaydayup/p/18551593

实验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);}@Overridepublic void add(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void remove(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void display() {System.out.println("播放视频文件: " + fileName);}
}package touming;// 文本文件类
public class TextFile extends AbstractFile {public TextFile(String fileName) {super(fileName);}@Overridepublic void add(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void remove(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic 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);}@Overridepublic void add(AbstractFile element) {fileList.add(element);}@Overridepublic void remove(AbstractFile element) {fileList.remove(element);}@Overridepublic 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);}@Overridepublic void add(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void remove(AbstractFile element) {System.out.println("不支持该方法");}@Overridepublic void display() {System.out.println("显示图像文件: " + fileName);}
}

3.注意编程规范。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/835990.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据分析:完整的成体系的生存分析的结果汇总

本章节全面汇总了生存分析的相关各类分析方法,形成了一个系统化的生存分析教程。通过这个教程,读者可以深入了解生存分析所涵盖的多种分析技术。详细情况请前往 数据分析:完整的成体系的生存分析的结果汇总 科研绘图系列:组合多个文章图 介绍 本章节全面汇总了生存分析的相…

20222417 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1.本周内容回顾Metasploit Framework(MSF)是一款开源安全漏洞检测工具,附带数千个已知的软件漏洞,并保持持续更新。Metasploit可以用来信息收集、漏洞探测、漏洞利用等渗透测试的全流程,被安全社区冠以“可以黑掉整个宇宙”之名。旨在帮助安全专家和IT专家识别安全问题、验证…

Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述

Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述Red Hat Enterprise Linux 9.5 发布下载,新增功能亮点概述 Red Hat Enterprise Linux 9.5 (x86_64, aarch64) - 红帽企业 Linux RHEL 9 | 红帽企业 Linux 9 请访问原文链接:https://sysin.org/blog/rhel-9/ 查看最新…

2024.11.14(周四)

某物资管理系统中物资采购需要分级审批,主任可以审批1万元及以下的采购单,部门经理可以审批5万元及以下的采购单,副总经理可以审批10万元及以下的采购单,总经理可以审批20万元及以下的采购单,20万元以上的采购单需要开职工大会确定。现用职责链模式设计该系统。 实验要求:…

2024.11.15(周五)

某系统需要提供一个命令集合(注:可以使用链表,栈等集合对象实现),用于存储一系列命令对象,并通过该命令集合实现多次undo()和redo()操作,可以使用加法运算来模拟实现。 实验要求: 1. 提交类图; 2. 提交源代码; 3. 注意编程规范。1、类图2、源代码 #include<iostre…

C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)

前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。欢迎投稿、推荐或自荐优质文章、项目、学习资源等…

2024.11.13(周三)

婚介所其实就是找对象的一个代理,请仿照我们的课堂例子“论坛权限控制代理”完成这个实际问题,其中如果年纪小于18周岁,婚介所会提示“对不起,不能早恋!”,并终止业务。 实验要求: 1. 提交类图; 2. 提交源代码; 3. 注意编程规范。1、类图2、源代码 #include <iostr…

读数据质量管理:数据可靠性与数据质量问题解决之道07异常检测

异常检测1. 监控和异常检测 1.1. 在数据方面,所有明面上的测试和数据质量检查都不能完全保护你免受数据宕机的影响1.1.1. 宕机可能由于各种原因而出现在管道内部和外部的各个阶段1.1.2. 这些原因通常与数据本身无关1.2. 要了解数据何时中断,最好的做法是依靠数据监控,特别是…

2024.11.18 鲜花

浅谈多线程浅谈多线程打上花火 あの日(ひ)见渡(みわた)した渚(なぎさ)を 那天所眺望的海岸 a no hi mi wa ta shi ta na gi sa wo 今(いま)も思(おも)い出(だ)すんだ 直至今日仍能想起 i ma mo o mo i da su n da 砂(すな)の上(うえ)に刻(きざ)んだ言叶(ことば) 在沙滩上刻下的…

Rocky9.3安装snipe-it

全新安装最小化rocky 使用root用户登入系统,避免之后麻烦 安装几个工具yum -y install net-tools wget vim gcc按照官方文档要求安装必须的软件我们首先安装一下php,因为现在仓库中的php版本不满足8.1以上的要求,所以我们到php官网下载8.3.13使用wget下载到根目录下的tmp好了…

【圆圆的日语教室】日语入门第2课-平假名的书写+了解日本

第二课 相似的假名平假名的书写あ (a) 的书写第二笔不要太直,它是从草书演变过来的,特点是圆润有弧度 第三笔要交叉 长得像“安”い (i) 的书写第一笔要勾上去う (u) 的书写第一笔:点第二笔:起笔不要太平,先往上走再往下拐。联想记忆:u住耳朵え (e) 的书写联想:e,见到一…

Scrum 冲刺博客-day3

这个作业属于哪个课程 班级的链接这个作业要求在哪里 作业要求的链接这个作业的目标 Scrum 冲刺博客-day3团队成员 梁志聪 李永杰 曾繁曦一、会议照片二、工作情况成员 昨天已完成工作 今日计划工作梁志聪 编写主菜单,人物移动相关代码 设计障碍物,实现人物碰撞李永杰 构思大…