首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 操作系统 >

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

2012-11-10 
易学设计模式二 组合模式(Composite)组合模式将对象组合成树形结构以表示部分-整体的层次结构。Composit

易学设计模式二 组合模式(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

热点排行