2023/10/15 每日总结

今天完成了设计模式实验10

实验10:组合模式

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

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

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

 

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

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

源代码

 

package org.test10;

public abstract class AbstractFile {
    public abstract void add(AbstractFile element);
    public abstract void remove(AbstractFile element);
    public abstract void display();
}
package org.test10;

public class Client {
   public static void main(String[] args) {
      AbstractFile folder1=new Folder("folder1");
      AbstractFile folder2=new Folder("folder2");
      AbstractFile imageFile = new ImageFile("a.jpg");
      AbstractFile textFile=new TextFile("a.txt");
      AbstractFile videoFile = new VideoFile("a.mp4");
      folder1.add(imageFile);
      folder2.add(textFile);
      folder2.add(videoFile);
      folder1.add(folder2);
      folder1.display();
   }

}
package org.test10;

import java.util.ArrayList;

public class Folder extends AbstractFile{
    private String fileName;
    private ArrayList<AbstractFile> fileList=new ArrayList();
    public Folder(String filename)
    {
        this.fileName=filename;
    }
    @Override
    public void add(AbstractFile element) {
        fileList.add(element);
        System.out.println("add Folder");
    }

    @Override
    public void remove(AbstractFile element) {
        fileList.remove(element);
        System.out.println("remove Folder");
    }

    @Override
    public void display() {
        System.out.println("Folder");
        System.out.println(fileName);
        for(Object object:fileList)
        {
            ((AbstractFile)object).display();
        }

    }
}
package org.test10;

public class ImageFile extends AbstractFile{
    private String fileName;

    public ImageFile(String fileName) {
        this.fileName = fileName;
    }

    @Override
    public void add(AbstractFile element) {
        System.out.println("add Image");
    }

    @Override
    public void remove(AbstractFile element) {
        System.out.println("remove Image");
    }

    @Override
    public void display() {
        System.out.println(fileName+" ImageFile");
    }
}
package org.test10;

public class TextFile extends AbstractFile{
    private String filename;

    public TextFile(String filename) {
        this.filename = filename;
    }

    @Override
    public void add(AbstractFile element) {
        System.out.println("add text");
    }

    @Override
    public void remove(AbstractFile element) {
        System.out.println("remove text");
    }

    @Override
    public void display() {
        System.out.println(filename+" textfile");
    }
}
package org.test10;

public class VideoFile extends AbstractFile{
    private String fileName;

    @Override
    public void add(AbstractFile element) {
        System.out.println("add video");
    }

    public VideoFile(String fileName) {
        this.fileName = fileName;
    }

    @Override
    public void remove(AbstractFile element) {
        System.out.println("remove video");
    }

    @Override
    public void display() {
        System.out.println(fileName+" video file");
    }
}

 

posted @ 2023-10-16 22:05  樱花开到我身边  阅读(9)  评论(0)    收藏  举报