GOF结构型模式:组合模式

package Composite;

import java.util.ArrayList;
import java.util.List;

public interface AbstractFile {
    void Killvirus();
}

class ImageFile implements AbstractFile {
    private String name;

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

    public void Killvirus() {
        System.out.println("图像文件" + name + "进行查杀");
    }
}

class TextFile implements AbstractFile {
    private String name;

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

    public void Killvirus() {
        System.out.println("文本文件" + name + "进行查杀");
    }
}

class VideoFile implements AbstractFile {
    private String name;

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

    public void Killvirus() {
        System.out.println("视频文件" + name + "进行查杀");
    }
}


class Folder implements AbstractFile {
    private String name;
    //定义容器,存储本容器下的子节点
    private List<AbstractFile> list = new ArrayList<AbstractFile>();

    public Folder(String name) {
        this.name = name;
    }

    public void add(AbstractFile f) {
        list.add(f);
        System.out.println("添加文件"+f);
    }

    public void remove(AbstractFile f) {
        list.remove(f);

        System.out.println("删除文件"+f);
    }

    public AbstractFile getChild(int index) {
        return list.get(index);
    }

    public void Killvirus() {
        System.out.println("文件夹"+name+"进行查杀");
        for(AbstractFile file :list){
            file.Killvirus();
        }
    }
}
package Composite;

public class Client {
    public static void main(String[] args) {
        AbstractFile f1, f2, f3, f4, f5;
        f1 = new Folder("我的收藏");
        f2 = new ImageFile("头像");
        f3 = new TextFile("小说");

        ((Folder) f1).add(f2);
        ((Folder) f1).add(f3);
        f2.Killvirus();
    }
}

运行结果:

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 12:04
毕业生招你惹你了,问一个发薪日来一句别看网上乱七八糟的你看哪个工作没有固定发薪日扭头就取消了面试就问了一句公司都是这个态度吗还搞上人身攻击了...
程序员小白条:呃呃呃,都还没面试,我都不会问这么细,何况通不通过,去不去都另说,你没实力和学历的话,在外面就这样,说实话没直接已读不回就不错了,浪费时间基本上
点赞 评论 收藏
分享
昨天 15:12
门头沟学院 运营
点赞 评论 收藏
分享
白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务