组合模式---结构型模式

组合模式(一般用于树状结构,其实有点想发布订阅模式)

以文件夹系统为列子,假如我们要查杀D盘下的文件

文件夹对象和文件对象都有查杀方法,而文件夹对象还有增、删、查的功能

public interface AdFile {
    void kill();
}

 interface FloerFile extends AdFile {
    void add(AdFile file);
    void dele(AdFile file);
     AdFile getFile(int index);
}

增加图片文件、视频文件、和文件夹calss

class ImgFile implements AdFile{

    @Override
    public void kill() {
        System.out.println("图片查杀");
    }
}
class VideoFile implements AdFile{

    @Override
    public void kill() {
        System.out.println("视频查杀");
    }
}
public class Floer implements FloerFile {
    List<AdFile> fileList;

    String name;

    Floer(String name){
        fileList = new ArrayList<AdFile>();
        this.name=name;
    }

    @Override
    public void kill() {
        fileList.stream().forEach(f->{
            f.kill();
        });
    }

    @Override
    public void add(AdFile file) {
        fileList.add(file);
    }

    @Override
    public void dele(AdFile file) {
        fileList.remove(file);
    }

    @Override
    public AdFile getFile(int index) {
        return fileList.get(index);
    }

}

主函数,构件一个文件夹,然后查杀

    public static void main(String[] args) {
        FloerFile floer = new Floer("c");
        FloerFile look = new Floer("look");
        floer.add(look);
        look.add(new ImgFile());
        look.add(new VideoFile());
        floer.kill();
    }
欢迎关注我的公众号:“进阶者euj”
原文地址:https://www.cnblogs.com/yeyongjian/p/8905132.html