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

Posted 大佬健

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组合模式---结构型模式相关的知识,希望对你有一定的参考价值。

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

 

以文件夹系统为列子,假如我们要查杀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();
    }

 

以上是关于组合模式---结构型模式的主要内容,如果未能解决你的问题,请参考以下文章

结构型模式-组合模式(树形结构的处理)

Python 设计模式 — 结构型模式 — 组合模式

Python 设计模式 — 结构型模式 — 组合模式

设计模式 结构型模式 -- 组合模式实例:显示文件夹结构

设计模式组合模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

在组合模式中实现访问者(Visitor)模式