`

结构型模式--组合模式(Composite)

阅读更多

组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便,看看关系图:

Java组合模式

对象通过实现(继承)统一的接口(抽象类),调用者对单一对象和组合对象的操作具有一致性

直接来看代码:

[java] view plaincopy
  1. public class TreeNode {  
  2.       
  3.     private String name;  
  4.     private TreeNode parent;  
  5.     private Vector<TreeNode> children = new Vector<TreeNode>();  
  6.       
  7.     public TreeNode(String name){  
  8.         this.name = name;  
  9.     }  
  10.   
  11.     public String getName() {  
  12.         return name;  
  13.     }  
  14.   
  15.     public void setName(String name) {  
  16.         this.name = name;  
  17.     }  
  18.   
  19.     public TreeNode getParent() {  
  20.         return parent;  
  21.     }  
  22.   
  23.     public void setParent(TreeNode parent) {  
  24.         this.parent = parent;  
  25.     }  
  26.       
  27.     //添加孩子节点  
  28.     public void add(TreeNode node){  
  29.         children.add(node);  
  30.     }  
  31.       
  32.     //删除孩子节点  
  33.     public void remove(TreeNode node){  
  34.         children.remove(node);  
  35.     }  
  36.       
  37.     //取得孩子节点  
  38.     public Enumeration<TreeNode> getChildren(){  
  39.         return children.elements();  
  40.     }  
  41. }  
[java] view plaincopy
  1. public class Tree {  
  2.   
  3.     TreeNode root = null;  
  4.   
  5.     public Tree(String name) {  
  6.         root = new TreeNode(name);  
  7.     }  
  8.   
  9.     public static void main(String[] args) {  
  10.         Tree tree = new Tree("A");  
  11.         TreeNode nodeB = new TreeNode("B");  
  12.         TreeNode nodeC = new TreeNode("C");  
  13.           
  14.         nodeB.add(nodeC);  
  15.         tree.root.add(nodeB);  
  16.         System.out.println("build the tree finished!");  
  17.     }  
  18. }  

使用场景:将多个对象组合在一起进行操作,常用于表示树形结构中,例如二叉树,数等。

 

2=====================================================

interface Node{  
    public void copy(); //定义统一的接口:复制  
}  
 
class Folder implements Node{  
    private String folderName;  
    private ArrayList nodeList =new ArrayList(); //用于存储文件夹下的文件夹或文件的信息 
 
    public Folder(String folderName){  
        this.folderName = folderName;  
    }  
 
    public void add(Node node){ //增加文件或文件夹  
        nodeList.add(node);  
    }  
 
    public void copy(){  //文件夹复制操作实现递归  
        System.out.println("复制文件夹:" + folderName);  
        for(int i=0;i
            Node node = (Node)nodeList.get(i);  
            node.copy();  
        }  
    }  
}  
 
class File implements Node{  
    private String fileName;  
 
    public File(String fileName){  
        this.fileName = fileName;  
    }  
 
    public void copy(){  
        System.out.println("复制文件:" + fileName);  
    }  
}  
 
public class Composite{  
    public static void main(String[] args){  
        Folder document = new Folder("我的资料"); //我的资料文件夹  
        File book = new File("Java编程思想.pdf");  //文档文件  
        Folder music = new Folder("我的音乐");   //我的音乐文件夹  
        File music1 = new File("你是我的眼.mp3");   //音乐文件1  
        File music2 = new File("Without You.mp3");  //音乐文件2  
        //确定树形结构关系  
        document.add(book);  
        document.add(music);  
        music.add(music1);  
        music.add(music2);  
 
        document.copy(); //复制“我的资料”文件夹,递归地复制了其下所有文件夹和文件。 
    }  
} 

 运行结果如下:

  1. 复制文件夹:我的资料  
  2. 复制文件:Java编程思想.pdf  
  3. 复制文件夹:我的音乐  
  4. 复制文件:你是我的眼.mp3  
  5. 复制文件:Without You.mp3 
分享到:
评论

相关推荐

    c++设计模式-结构型模式-组合模式

    c++设计模式-结构型模式-组合模式;qt工程;c++简单源码; 组合(Composite Pattern)模式的定义:有时又叫作整体-部分(Part-Whole)模式,它是一种将对象组合成树状的层次结构的模式,用来表示“整体-部分”的关系...

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式)

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式)

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式) (Level 300)

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式) (Level 300)

    C#面向对象设计模式纵横谈\9 结构型模式Composite组合模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不需要... 这是第9节:结构型模式Composite组合模式

    设计模式面面观(10):桥接模式(Bridge Pattern)-结构型模式

    组合模式(Composite Pattern)-结构型模式 (0%) &lt;br&gt;讲义书写模式 在实际的讲解中我会用一套模式来讲述我对设计模式的理解 1.给出当前章节模式的名称 2.讲述一个小故事,提出问题 3.回答这个...

    设计模式--C++

    4.3 Composite(组成)—对象结构型模式 107 4.4 Decorator(装饰)—对象结构型模式 115 4.5 FACADE(外观)—对象结构型模式 121 4.6 Flyweight(享元)—对象结构型模式 128 4.7 Proxy(代理)—对象结构型模式 ...

    组合模式 Composite Pattern

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及...这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

    设计模式面面观(11):组合模式(Composite Pattern)-结构型模式

    http://blog.csdn.net/fanweiwei/archive/2008/02/26/2121336.aspx

    设计模式_组合模式.zip

    这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。 这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。 我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的...

    组合模式(Composite Pattern)原理图

    组合模式(Composite Pattern)是一种对象结构型模式,其定义是将多个对象组合成树形结构以表示“整体-部分”关系的层次结构。它使得客户端对单个对象和组合对象的使用具有一致性。在组合模式中,对象被组织成树形...

    C#设计模式结构型

    C#设计模式-结构型相关课件 合成模式(Composite) • 设计方案一: 合成模式(Composite) • 设计方案二 合成模式(Composite) • 设计方案一和设计方案二的区别 – 设计方案二使得客户端更不需要关心所需处理的...

    单例模式源码java-DesignPattern:在个人自学阶段的23种设计模式代码的全部实现,全部使用Java编写,其中还包括各个设计模式在

    结构型模式 Adapter--------&gt;适配器模式 Bridge--------&gt;桥接模式 Composite--------&gt;组合模式 Decorator--------&gt;装饰模式 Facade--------&gt;外观模式 FlyWeight--------&gt;享元模式 Proxy--------&...

    23种设计模式 (创建型,结构型,行为型)

    组合模式(Composite Pattern) 10. 外观模式(Facade Pattern) 11. 享元模式(Flyweight Pattern) 12. 代理模式(Proxy Pattern) 13. 模板方法(Template Method) 14. 命令模式(Command Pattern) 15. 迭代...

    C#面向对象设计模式纵横谈(视频与源码)

    C#面向对象设计模式纵横谈(9):Composite 组合模式(结构型模式) C#面向对象设计模式纵横谈(10):Decorator 装饰模式(结构型模式) C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) C#面向对象设计...

    design-pattern-java.pdf

    七个结构型模式 七个结构型模式 适配器模式-Adapter Pattern 不兼容结构的协调——适配器模式(一) 不兼容结构的协调——适配器模式(二) 不兼容结构的协调——适配器模式(三) 不兼容结构的协调——适配器模式...

    设计模式可复用面向对象软件的基础.zip

    4.8 结构型模式的讨论 144 4.8.1 Adapter与Bridge 144 4.8.2 Composite、Decorator与Proxy 145 第5章 行为模式 147 5.1 CHAIN OF RESPONSIBIL ITY(职责链) —对象行为型模式 147 5.2 COMMAND(命令)—对象行为型 ...

    01-制造工具的工厂模式(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...

    09-通过容器实现的外观模式(2).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...

    12-附录 1 设计模式的七大原则(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...

Global site tag (gtag.js) - Google Analytics