zoukankan      html  css  js  c++  java
  • 组合模式---结构型模式

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

    以文件夹系统为列子,假如我们要查杀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”
  • 相关阅读:
    表值参数学习
    js闭包
    vue相关
    js的面向对象
    JavaScript中template模板引擎
    使用原生的ajax的步骤(五个步骤)
    (a ==1 && a== 2 && a==3) 有可能是 true 吗?
    这道JS笔试题你做对了吗?
    JS事件分类
    JS事件绑定模型
  • 原文地址:https://www.cnblogs.com/yeyongjian/p/8905132.html
Copyright © 2011-2022 走看看