`

组合(Composite)模式--实践

阅读更多

组合(Composite)模式主要角色:
1.Component角色
2.Leaf角色
3.Composite角色

package com.pattern.composite;   
/** *//**  
 * 组件抽象角色  
 *  
 
*/
  
public interface Component {   
       
    
public void run();   
  
}
  
package com.pattern.composite;   
/** *//**  
 * 叶子角色  
 *  
 
*/
  
public class Leaf implements Component{   
       
    
public void run(){   
        System.out.println(
" run invoked");   
    }
   
  
}
  


package com.pattern.composite;   
  
import java.util.ArrayList;   
import java.util.List;   
/** *//**  
 * 组合角色  
 * 实现组件角色接口,并且添加,删除的也是组件角色  
 *   
 * Composite本来可以再包含Leaf和Composite的。而 Leaf和Composite 又都属于 Component,所以增加,删除 的是Component  
 *   
 * 组合模式主要分为2种  
 *   
 * 1 透明式  
 
    添加Component对象的操作定义在Component角色中,这样的话不仅Composite需要实现这些方法,Leaf也需要实现这些方法,  
    而这些方法对于Leaf来说没有任何意义,不过将系统实现统一起来了,因此对用户来说透明(用户无需区分Composite还是Leaf)  
    ,因为这些角色中都具备这些方法。  
      
   2 安全式  
 
    添加Component对象的操作定义在Composite角色中,这样的话Leaf就无需实现这些方法(因为Leaf本身根本不需要实现这些方法)  
 *  
 
*/
  
public class Composite  implements Component{   
       
    List
<Component> list = new ArrayList<Component>();   
       
    
//添加   
    public void addComponent(Component component){   
        list.add(component);   
    }
   
    
//删除   
    public void removeComponent(Component component){   
        list.remove(component);   
    }
   
       
    
//get   
    public List<Component> getAll(){   
        
return list;   
    }
   
       
    
public void run(){   
        
for(Component component : list){   
            component.run();   
        }
   
    }
   
  
}
  


package com.pattern.composite;   
  
public class Client {   
  
    
public static void main(String[] args){   
        Leaf leaf1 
= new Leaf();   
        Leaf leaf2 
= new Leaf();   
        Leaf leaf3 
= new Leaf();   
           
        Composite composite 
= new Composite();   
           
        composite.addComponent(leaf1);   
        composite.addComponent(leaf2);   
           
        Composite composite1 
= new Composite();   
        composite1.addComponent(composite);   
        composite1.addComponent(leaf3);   
           
        composite1.run();   
           
    }
   


々上善若水々 2008-05-17 11:10 发表评论
分享到:
评论

相关推荐

    java常用设计模式-组合模式

    在实践中,组合模式广泛应用于文件系统、图形用户界面、数据结构等领域。例如,在文件系统中,我们可以使用组合模式来表示文件和文件夹的树形结构。在图形用户界面中,我们可以使用组合模式来表示 UI 组件的树形结构...

    设计模式-组合实体

    在众多设计模式中,组合实体(Composite)模式是一种结构型模式,它允许我们以树形结构来表示部分与整体的关系,使得用户可以一致地处理单个对象和对象组合。在iOS开发中,组合实体模式尤其有用,因为它简化了复杂...

    2 组合模式-课程内容.rar

    7. **最佳实践**:提供在实际开发中如何有效应用组合模式的建议。 8. **代码示例**:包含完整的代码实现,帮助理解如何在实际项目中实现和使用组合模式。 9. **设计模式的组合使用**:讲述如何将组合模式与其他设计...

    Python编程 -设计模式-从入门到实践

    结构型模式处理对象的组合和聚合,例如适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)、组合模式(Composite)和代理模式(Proxy)。Python的...

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

    Composite模式的核心动机正是为了解决这一问题,通过将客户代码与复杂对象容器结构解耦,确保无论处理的是单个对象还是复合对象,都能保持一致的接口和行为。 2. **Composite模式的意图与结构** Composite模式的...

    设计模式精解-GoF-23种设计模式解析--附C++源代码

    - 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构。 - 装饰模式(Decorator):动态地给一个对象添加一些额外的职责。 - 享元模式(Flyweight):使用共享对象,有效地支持大量细...

    设计模式实验报告-组合模式.docx

    本次实验旨在通过实践学习设计模式中的组合模式,理解其工作原理及应用场景。组合模式(Composite Pattern)是一种结构型设计模式,它允许用户将对象组合成树形结构来表示部分-整体层次结构。该模式使得用户对单个...

    JAVA设计模式-chm版

    包括适配器模式(Adapter)、桥接模式(Bridge)、装饰器模式(Decorator)、外观模式(Facade)、组合模式(Composite)、享元模式(Flyweight)和代理模式(Proxy)。这些模式可以帮助我们更好地组织代码,实现...

    26种设计模式-----pdf

    结构型模式则关注如何将类或对象组合成更大的结构,例如适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)和组合模式(Composite)。这些模式可以帮助我们处理类与类之间的...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    ##### Composite模式 - **定义**:组合模式是一种结构型设计模式,它能让您将对象组合成树形结构并以相同的方式处理所有单个对象和组合。 - **应用场景**:当想表示对象的部分-整体层次结构;用户想使用一致的方式...

    C#设计模式-C#设计模式

    7. 组合模式(Composite): 组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。C#中的组合模式允许用户对单个对象和组合对象进行一致的操作,提供了一种统一的接口。 8. 装饰器模式(Decorator): ...

    设计模式-王翔 全本

    例如,装饰器模式可以和组合模式(Composite)结合,用于动态地增加或减少对象的功能。同时,王翔可能会讨论如何在实际项目中选择和应用设计模式,以及避免陷入过度设计的陷阱。 在阅读《设计模式》.pdf的过程中,...

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

    2. 结构型模式:关注如何将类或对象组合成更大的结构,例如适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)和代理模式...

    23种 设计模式---面向对象的基本原则

    - 组合模式(Composite):将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 - 装饰模式(Decorator):动态地给一个对象添加一些额外的职责,提供比继承更...

    设计模式--java版.rar

    结构型模式包括适配器(Adapter)、桥接(Bridge)、组合(Composite)、装饰(Decorator)、外观(Facade)、享元(Flyweight)和代理(Proxy)。这些模式主要处理类与类之间的关系,通过组合、继承或代理等手段,...

    设计模式--C#版[此忆附有源码]

    组合模式(Composite)将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户可以对单个对象和组合对象进行一致的处理。 3. 行为型模式:主要涉及对象之间的责任分配,如策略模式(Strategy)定义了一族...

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    Composite模式使得用户对单个对象和组合对象的使用具有一致性。 - **Flyweight模式**:运用共享技术有效地支持大量细粒度的对象。 - **Facade模式**:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个...

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

    2. 结构型模式(Structural Patterns):关注类和对象的组合,如适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)、组合模式(Composite)、外观模式(Facade)和享元模式...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)__(0521).rar

    2. 结构型模式:包括适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰模式(Decorator)、外观模式(Facade)、代理模式(Proxy)和享元模式(Flyweight)。这些模式主要处理类与类之间的...

Global site tag (gtag.js) - Google Analytics