9.23
实验10:组合模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解组合模式的动机,掌握该模式的结构;
2、能够利用组合模式解决实际问题。
[实验任务一]:组合模式
用透明组合模式实现教材中的“文件夹浏览”这个例子。
实验要求:
1.文件的执行不需真正实现,只需简单提示即可;
2.提交源代码;
3.注意编程规范。
AbstractFile public abstract class AbstractFile { public abstract void add(AbstractFile ele); public abstract void remove(AbstractFile ele); public abstract void display(); } Folder import java.util.ArrayList; public class Folder extends AbstractFile{ private String filename; private ArrayList al=new ArrayList<>(); public Folder(String f) { filename=f; } @Override public void add(AbstractFile ele) { // TODO Auto-generated method stub al.add(ele); System.out.println("Folder add"); } @Override public void remove(AbstractFile ele) { // TODO Auto-generated method stub al.remove(ele); System.out.println("Folder remove"); } @Override public void display() { // TODO Auto-generated method stub for(Object object:al) { ((AbstractFile)object).display(); } System.out.println("Folder:display"); } } ImageFile public class ImageFile extends AbstractFile{ private String filename; public ImageFile(String f) { filename=f; } @Override public void add(AbstractFile ele) { // TODO Auto-generated method stub System.out.println("添加Image文件"); } @Override public void remove(AbstractFile ele) { // TODO Auto-generated method stub System.out.println("删除Image文件"); } @Override public void display() { // TODO Auto-generated method stub System.out.println("展示Image文件"+filename); } } TextFile public class TextFile extends AbstractFile{ private String filename; public TextFile(String f) { filename=f; } @Override public void add(AbstractFile ele) { // TODO Auto-generated method stub System.out.println("添加Text文件"); } @Override public void remove(AbstractFile ele) { // TODO Auto-generated method stub System.out.println("删除Text文件"); } @Override public void display() { // TODO Auto-generated method stub System.out.println("展示Text文件"+filename); } } VideoFile public class VideoFile extends AbstractFile{ private String filename; public VideoFile(String f) { filename=f; } @Override public void add(AbstractFile ele) { // TODO Auto-generated method stub System.out.println("添加Video文件"); } @Override public void remove(AbstractFile ele) { // TODO Auto-generated method stub System.out.println("删除Video文件"); } @Override public void display() { // TODO Auto-generated method stub System.out.println("展示Video文件"+filename); } } Cient public class Client { public static void main(String a[]) { AbstractFile obj1,obj2,obj3,obj4,obj5; Folder plate1,plate2,plate3; obj1=new ImageFile("aaa.png"); obj2=new TextFile("bbb.txt"); plate1=new Folder("ccc"); plate1.add(obj1); plate1.add(obj2); obj3=new VideoFile("ddd.mp3"); obj4=new VideoFile("eee.mp3"); plate2=new Folder("fff"); plate2.add(obj3); plate2.add(obj4); obj5=new ImageFile("ggg.jpg"); plate3=new Folder("hhh"); plate3.add(plate1); plate3.add(plate2); plate3.add(obj5); plate3.display(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!