组合模式(一般用于树状结构,其实有点想发布订阅模式)
以文件夹系统为列子,假如我们要查杀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(); }
原文:https://www.cnblogs.com/yeyongjian/p/8905132.html