23种设计模式之组合模式

xiaoxiao2021-02-28  100

package com.kinsey.woo.composite; public interface AbstractFile { public void killVirus(); } package com.kinsey.woo.composite; public class ImageFile implements AbstractFile { private String name; @Override public void killVirus() { System.out.println(name + "文件正在被查杀..."); } public String getName() { return name; } public void setName(String name) { this.name = name; } public ImageFile(String name) { super(); this.name = name; } } package com.kinsey.woo.composite; public class VideoFile implements AbstractFile { private String name; public VideoFile(String name) { super(); this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public void killVirus() { System.out.println(name + "文件正在被查杀..."); } } package com.kinsey.woo.composite; import java.util.ArrayList; import java.util.List; public class Folder implements AbstractFile { private String name="default"; private List<AbstractFile> fileList; public String getName() { return name; } public void setName(String name) { this.name = name; } public List<AbstractFile> getFileList() { return fileList; } public void setFileList(List<AbstractFile> fileList) { this.fileList = fileList; } public void addFile(AbstractFile file){ fileList.add(file); } public AbstractFile getFile(int index){ return fileList.get(index); } public Folder() { super(); fileList = new ArrayList<AbstractFile>(); } @Override public void killVirus() { for(AbstractFile file:fileList){ file.killVirus(); } } } package com.kinsey.woo.composite; public class Client { public static void main(String[] args) { AbstractFile f1,f2; Folder f11 = new Folder(); f1 = new ImageFile("julia.jpg"); f2 = new VideoFile("dnf.mp4"); f11.addFile(f1); f11.addFile(f2); f11.killVirus(); f11.getFile(0).killVirus(); System.out.println("----------"); Folder f12 = new Folder(); f12.addFile(f11); f12.addFile(f2); f12.killVirus(); } }

转载请注明原文地址: https://www.6miu.com/read-60442.html

最新回复(0)