zoukankan      html  css  js  c++  java
  • 组合模式

    package com.design;
    
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    /**组合模式
     *    应树形结构而生,所以组合模式的使用场景就是出现树形结构的地方。比如:文件目录显示,多及目录呈现等树形结构数据的操作
     * Created by nicknailo on 2018/8/20.
     */
    public class CombinatorialPattern {
    
        public static void main(String[] args) {
    
            Noder noder = new Noder("./../");
            createTree(noder);
            noder.display();
    
        }
    
        public static void createTree(Noder noder){
            File file = new File(noder.nodeName);
            File[] f = file.listFiles();
            for(File f1 : f){
                if( f1.isFile() ){
                    Filer filer = new Filer(f1.getAbsolutePath());
                    noder.addFiler(filer);
                }
                if(f1.isDirectory()){
                    Noder noder1 = new Noder(f1.getAbsolutePath());
                    noder.addNoder(noder1);
    //                使用递归生成树结构
                    createTree(noder1);
                }
            }
        }
    
    }
    
    class Noder{
         String nodeName;
        List<Noder> noderList = new ArrayList<Noder>();
        List<Filer> filerList = new ArrayList<Filer>();
    
        public Noder(String nodeName) {
            this.nodeName = nodeName;
        }
    
        public  void addNoder(Noder noder){
            noderList.add(noder);
        }
    
        public void addFiler(Filer filer){
            filerList.add(filer);
        }
    
        public void display(){
            for(Noder noder: noderList){
                System.out.println( noder.nodeName );
    //            递归显示子目录
                noder.display();
            }
            for (Filer filer : filerList){
                System.out.println( filer.filename );
            }
        }
    }
    
    class Filer{
         String filename;
    
        public Filer(String filename) {
            this.filename = filename;
        }
    
        public void display(){
            System.out.println( filename );
        }
    
    
    }
    

      参考:https://www.cnblogs.com/V1haoge/p/6489827.html

  • 相关阅读:
    模拟实现ajax加载框
    京东晒单的js实现
    微信分享js代码(转载)
    css模拟实现selec下拉框
    网页端实现输入卡号四字隔开
    返回顶部的动态显示与隐藏
    js等比例缩放图片(转载)
    css模拟实现checkbox
    quartz的使用 Mr
    Spring声明式事务配置管理方法 Mr
  • 原文地址:https://www.cnblogs.com/nicknailo/p/9503566.html
Copyright © 2011-2022 走看看