组合模式

Component

package org.designPattern.composite14;

import java.util.List;


public interface IFile {
    

    public void display();
    

    public boolean add(IFile file);
    

    public boolean remove(IFile file);

    public List<IFile> getChild();
}

Leaf:

package org.designPattern.composite14;

import java.util.ArrayList;
import java.util.List;


public class Folder implements IFile{
    private String name;
    private List<IFile> children;
    
    public Folder(String name) {
        this.name = name;
        children = new ArrayList<IFile>();
    }
    

    public void display() {
        System.out.println(name);
    }

    public List<IFile> getChild() {
        return children;
    }


    public boolean add(IFile file) {
        return children.add(file);
    }


    public boolean remove(IFile file) {
        return children.remove(file);
    }


}

package org.designPattern.composite14;

import java.util.List;


public class File implements IFile {
    private String name;
    
    public File(String name) {
        this.name = name;
    }
    

    public void display() {
        System.out.println(name);
    }

    public List<IFile> getChild() {
        return null;
    }


    public boolean add(IFile file) {
        return false;
    }

    public boolean remove(IFile file) {
        return false;
    }

}

package org.designPattern.composite14;

import java.util.List;


public class MainClass {
    public static void main(String[] args) {
        
        Folder rootFolder = new Folder("C:");
        
        Folder beifengFolder = new Folder("beifeng");
        
        File beifengFile = new File("beifeng.txt");
        
        rootFolder.add(beifengFolder);
        rootFolder.add(beifengFile);
        
        
        Folder ibeifengFolder = new Folder("ibeifeng");
        File ibeifengFile = new File("ibeifeng.txt");
        beifengFolder.add(ibeifengFolder);
        beifengFolder.add(ibeifengFile);
        
        Folder iibeifengFolder = new Folder("iibeifeng");
        File iibeifengFile = new File("iibeifeng.txt");
        ibeifengFolder.add(iibeifengFolder);
        ibeifengFolder.add(iibeifengFile);
        
        displayTree(rootFolder,0);
        
    }
    
    public static void displayTree(IFile rootFolder, int deep) {
        for(int i = 0; i < deep; i++) {
            System.out.print("--");
        }
    
        rootFolder.display();
        List<IFile> children = rootFolder.getChild();
        for(IFile file : children) {
            if(file instanceof File) {
                for(int i = 0; i <= deep; i++) {
                    System.out.print("--");
                }
                file.display();
            } else {
                displayTree(file,deep + 1);
            }
        }
    }
}



你可能感兴趣的:(组合模式)