读书人

易学设计形式二 组合模式(Composite)

发布时间: 2012-11-10 10:48:50 作者: rapoo

易学设计模式二 组合模式(Composite)
组合模式

将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性


适用性

1.你想表示对象的部分-整体层次结构。

2.你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。





不废话,上代码

public interface Node {public void copy();  //定义统一的接口:复制}


public class Folder implements  Node{private String folderName; private ArrayList<Node> nodeList = new ArrayList<Node>(); //用于存储文件夹下的文件夹或文件的信息    public Folder(String folderName){            this.folderName = folderName;        }     public void add(Node node){  //增加文件或文件夹             nodeList.add(node);         }     public void remove(Node node) { nodeList.remove(node); }  public void copy(){   //文件夹复制操作实现递归             System.out.println("复制文件夹:" + folderName);             for(int i=0;i<nodeList.size();i++){                 Node node = (Node)nodeList.get(i);                 node.copy();             }         }    }


public class File implements Node {private String fileName;public File(String fileName){            this.fileName = fileName;        }           public void copy(){            System.out.println("复制文件:" + fileName);        }    }


public class Client {public static void main(String[] args) {Folder document = new Folder("我的资料");  //我的资料文件夹            File book = new File("Java编程思想.pdf");   //文档文件            Folder music = new Folder("我的音乐");    //我的音乐文件夹            Folder goodVoice = new Folder("好声音");        File music1 = new File("你是我的眼.mp3");    //音乐文件1            File music2 = new File("Without You.mp3");   //音乐文件2            File music3 = new File("rock You.mp3");   //音乐文件2            //确定树形结构关系            document.add(book);            document.add(music);            music.add(goodVoice);        goodVoice.add(music3);        music.add(music1);            music.add(music2);               document.copy(); //复制“我的资料”文件夹,递归地复制了其下所有文件夹和文件。}}


输出

复制文件夹:我的资料
复制文件:Java编程思想.pdf
复制文件夹:我的音乐
复制文件夹:好声音
复制文件:rock You.mp3
复制文件:你是我的眼.mp3
复制文件:Without You.mp3

读书人网 >操作系统

热点推荐