设计模式实验参考答案

组合模式

Entry

public abstract class Entry {
   
   
   public abstract String getName(Entry file);
   public abstract int getSize(Entry file);
   public abstract void printList();
   public abstract void add(Entry file);
}

Directory

import java.util.ArrayList;
public class Directory extends Entry{
   
   
   private ArrayList<Entry> filelist=new ArrayList<Entry>();
   private String name;
   public Directory(String name) {
   
   
       this.name=name;
   }
   @Override
   public String getName(Entry file) {
   
   
       return name;
   }
   @Override
   public int getSize(Entry file) {
   
   
       return 0;
   }
   @Override
   public void printList() {
   
   
       System.out.println("****对文件夹 "+name+"正被读取");
       for(Object obj:filelist){
   
   
           ((Entry)obj).printList();
       }
   }
   @Override
   public void add(Entry file) {
   
   
       filelist.add(file);
   }
}

File

public class File extends Entry{
   
   
   private String name;
   private int size;
   public File(String name,int size)
   {
   
   
       this.name = name;
       this.size = size;
   }
   @Override
   public String getName(Entry file) {
   
   
       return name;
   }
   @Override
   public int getSize(Entry file) {
   
   
       return size;
   }
   @Override
   public void printList() {
   
   
       System.out.println("文件名: "+name+"     文件大小:"+size);
   }
   @Override
   public void add(Entry file) {
   
   
       System.out.println("对不起,不支持该方法");
   }
}

Main

public class Main {
   
   
   public static void main(String[] args) {
   
   
       Entry file1,file2,file3,file4,file5,directory1,directory2,directory3,directory4;
       directory1=new Directory("总资料");
       directory2=new Directory("图像文件");
       directory3 = new Directory("文本文件");
       directory4 = new Directory("视频文件");
       file1=new File("壁纸.jpg",110);
       file2=new File("图文.jif",300);
       file3=new File("网文.txt",90);
       file4=new File("实验报告.doc",111);
       file5=new File("电影.rmvb",1000);
       directory2.add(file1);
       directory2.add(file2);
       directory3.add(file3);
       directory3.add(file4);
       directory4.add(file5);
       directory1.add(directory2);
       directory1.add(directory3);
       directory1.add(directory4);
       directory1.printList();
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值