首页 > 其他分享 >组合模式

组合模式

时间:2024-12-30 22:29:41浏览次数:1  
标签:组合 void AbstractFile 模式 ele add TODO public

实验10:组合模式

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

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

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

 

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

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

实验要求:

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

2.提交源代码;

3.注意编程规范。

 

public abstract class AbstractFile {

public abstract void add(AbstractFile ele);

public abstract void remove(AbstractFile ele);

public abstract void display();

}

 

 

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.java

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

}

}

 

 

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.java

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

}

}

 

 

 

public class Client {

public static void main(String a[])

{

AbstractFile obj1,obj2,obj3,obj4,obj5;

Folder plate1,plate2,plate3;

obj1=new ImageFile("one.png");

obj2=new TextFile("two.txt");

plate1=new Folder("three");

plate1.add(obj1);

plate1.add(obj2);

obj3=new VideoFile("four.mp3");

obj4=new VideoFile("five.mp3");

plate2=new Folder("seven");

plate2.add(obj3);

plate2.add(obj4);

obj5=new ImageFile("eight.jpg");

plate3=new Folder("nine");

plate3.add(plate1);

plate3.add(plate2);

plate3.add(obj5);

plate3.display();

}

}

 

 

 

 

标签:组合,void,AbstractFile,模式,ele,add,TODO,public
From: https://www.cnblogs.com/Christmas77/p/18642608

相关文章

  • 解锁 Java 解释器模式:赋予程序理解 “新语言” 的魔力
    解锁Java解释器模式:赋予程序理解“新语言”的魔力在Java编程的广袤天地中,我们时常面临需要处理自定义规则、语法或逻辑表达式的场景。此时,解释器模式(InterpreterPattern)宛如一位神奇的翻译官,能够将这些看似晦涩难懂的“新语言”,转化为计算机能够理解并执行的指令,为......
  • 揭秘 Java 中介者模式:解耦复杂交互的神奇钥匙
    揭秘Java中介者模式:解耦复杂交互的神奇钥匙在Java开发的浩瀚天地里,随着系统复杂度的与日俱增,对象之间的交互常常变得错综复杂,宛如一团乱麻。此时,中介者模式(MediatorPattern)宛如一位智慧的协调大师,挺身而出,为我们理清理顺这些复杂的关系,打造更为优雅、易于维护的代码架......
  • 深入理解 Java 模板模式:代码复用与架构优化的利器
    深入理解Java模板模式:代码复用与架构优化的利器在Java编程世界中,设计模式如同智慧的结晶,帮助开发者应对各种复杂的软件开发需求。其中,模板模式(TemplatePattern)以其独特的代码复用和流程标准化能力,成为构建灵活且可维护系统的关键工具。今天,让我们一同深入探究Java中......
  • Spring中的设计模式
    Spring中的设计模式控制反转(IoC)和依赖注入(DI)IoC是一个原则,而不是一个模式,以下模式(但不限于)实现了IoC原则。**SpringIoC容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。**IoC容器负责创......
  • 超低功耗段LCD液晶段码显示屏驱动芯片(ic)VKL128 LQFP44 I2C通信接口/可配置4种功耗模
    产品品牌:永嘉微电/VINKA产品型号:VKL128封装形式:SSOP44概述VKL128是一个点阵式存储映射的LCD驱动器,可支持最大128点(32SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用于......
  • UML之组合与聚合
    关联和链接关系在很多情况下是对称的,即被关联的两个类都有以自己为源端对方为目标端的角色存在,而且角色与源端类的属性是等价的,即在关联一端的关联端(角色)等价于另外一端的属性。例如,在下图中,我们可以认为author:Person是类Book的一个属性,而myBooks:Person是类Person的一个属性。......
  • DiskSpd 是一个由微软开发的强大的存储性能测试工具,主要用于测试磁盘、存储设备和系统
    ReleaseDISKSPD2.2·microsoft/diskspd·GitHub 什么是DiskSpd?DiskSpd是一个由微软开发的强大的存储性能测试工具,主要用于测试磁盘、存储设备和系统的I/O性能。它是一个命令行工具,允许用户模拟不同的负载模式(如顺序读取、顺序写入、随机读取、随机写入等)来评估磁盘......
  • 【html】通用布局模式,让容器充满父元素,且center部分始终充满剩余空间,可无限嵌套
    源码采用vue3写法实现:Panel.vue<!--专用于布局的面板,可以无限嵌套,核心思想是保证center部分充满整个剩余空间--><template> <divclass="container"> <divclass="top"> <slotname="top"/> </div> <divclass="middle&q......
  • 状态模式
    实验 22:状态模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容: 1、理解状态模式的动机,掌握该模式的结构;2、能够利用状态模式解决实际问题。 [实验任务一]:银行账户 用Java代码模拟实现课堂上的“银行账户”的实例,要求编写客户端测试代码模拟用户存款和取款,注意......
  • 策略模式
     publicclassPerson{privateTravelStrategystrategy;publicvoidsetStrategy(TravelStrategystrategy){this.strategy=strategy;}publicvoidtravel(){strategy.travel();}}publicinterfaceTravelStrategy{......