`

设计模式:组合模式

阅读更多

组合模式(Composite)相对比较简单;但是在关于设计的地方很多都用到了这种模式。例如,SWT,Eclipse  Workspace等等。组合模式一般用来生成一个可以通过同一方法来访问不同层级的树。

1、类图



 

下面的代码例子实现了如下树状数据结构。



 2、代码实例

import java.util.List;
import java.util.ArrayList;
 
//Component
interface Component {
    public void show();
}
 
//Composite
class Composite implements Component {
 
    private List<Component> childComponents = new ArrayList<Component>();
 
    public void add(Component component) {
    	childComponents.add(component);
    }
 
    public void remove(Component component) {
    	childComponents.remove(component);
    }
 
	@Override
	public void show() {
		for (Component component : childComponents) {
        	component.show();
        }
	}
}
 
//leaf
class Leaf implements Component {
	String name;
	public Leaf(String s){
		name = s;
	}
    public void show() {
        System.out.println(name);
    }
}
 
 
public class CompositeTest {
 
    public static void main(String[] args) {
        Leaf leaf1 = new Leaf("1");
        Leaf leaf2 = new Leaf("2");
        Leaf leaf3 = new Leaf("3");
        Leaf leaf4 = new Leaf("4");
        Leaf leaf5 = new Leaf("5");
 
        Composite composite1 = new Composite();
        composite1.add(leaf1);
        composite1.add(leaf2);
 
        Composite composite2 = new Composite();        
        composite2.add(leaf3);
        composite2.add(leaf4);
        composite2.add(leaf5);
 
        composite1.add(composite2);
        composite1.show();
    }
}

 3、实际应用

Android中的视图描画过程。ViewGroup中的dispatchDraw,统一调用View的draw方法,来完成树状视图的描画。

 

  • 大小: 16 KB
  • 大小: 6.9 KB
分享到:
评论

相关推荐

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

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

    《设计模式:可复用面向对象软件的基础》英文版

    如适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、装饰者模式(Decorator)、外观模式(Facade)、享元模式(Flyweight)和代理模式(Proxy)等。 - **行为型模式**:关注于对象间的职责分配,...

    设计模式:基于C#的工程化实现及扩展(完整电子版)

    总之,《设计模式:基于C#的工程化实现及扩展》是一本对于C#开发者来说非常有价值的参考资料,它不仅讲解了设计模式的理论,还提供了丰富的实践案例,帮助读者掌握如何在实际项目中应用这些模式,提升软件开发的专业...

    设计模式:可复用面向对象软件的基础--详细书签版

    2.2.3 组合模式 27 2.3 格式化 27 2.3.1 封装格式化算法 27 2.3.2 compositor和composition 27 2.3.3 策略模式 29 2.4 修饰用户界面 29 2.4.1 透明围栏 29 2.4.2 monoglyph 30 2.4.3 decorator 模式 32 2.5...

    designPattern4:设计模式:组合模式,公司管理系统,迭代器模式(买车票)

    在给定的标题和描述中,提到了三种特定的设计模式:组合模式、公司管理系统以及迭代器模式。让我们深入探讨这三种模式以及它们在Java编程中的应用。 1. **组合模式**: 组合模式是一种结构型设计模式,它允许我们...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    《设计模式:可复用面向对象软件的基础》一书介绍了23种经典的设计模式,这些模式大致可以分为三大类: 1. **创建型模式**:专注于对象的创建机制,确保系统在合适的时机创建正确的对象。 - **单例模式**...

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

    - 组合模式:在场景图中表示对象和子对象,实现一致的处理方式; - 装饰模式:为游戏对象动态增加功能,如给角色动态增加装甲或魔法效果等; - 代理模式:用于控制对游戏资源的访问,如延迟加载或异步加载资源。 ...

    软件设计模式作业+答案

    组合模式(Composite Pattern):将对象组合成树形结构,以便于对对象的管理和操作。 适配器模式(Adapter Pattern):将一个类的接口转换为另一个类的接口,以便于不同类之间的通信和合作。 外观模式(Facade ...

    软件体系结构实验报告--设计模式2

    本实验报告主要探讨了五个关键的设计模式:组合模式、外观模式、代理模式、观察者模式以及策略模式,这些都是软件体系结构中的重要组成部分,对于理解和优化代码结构具有深远影响。 1. **组合模式**: 组合模式是一...

    设计模式:可复用面向对象软件设计基础(附源码)

    2. **结构型模式**:如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式和享元模式。这些模式关注如何将类或对象以某种方式组合起来,以实现新的功能或改善现有结构。 3. **行为型模式**:包括责任...

    Python 程序语言设计模式思路-结构型模式:组合模式:将对象组合成树形结构

    组合模式作为一种强大的设计模式,通过将对象组合成树形结构,可以表示“部分-整体”的层次结构,并统一地处理单个对象和组合对象,简化了客户端代码的复杂性,从而提高代码的灵活性和可扩展性。在实际开发中,它在...

    1.《设计模式:可复用面向对象软件的基础(完整书签)》

    总的来说,《设计模式:可复用面向对象软件的基础》是一本深入理解和应用面向对象设计的必备书籍,它不仅介绍了23种核心设计模式,还提供了大量实例和解释,帮助读者将理论知识转化为实际的编程技巧。通过对这本书的...

    C#面向对象设计模式纵横谈(25):设计模式总结

    8. 组合模式:组合模式将对象组合成树形结构,可以表示部分与整体的关系,使得用户对单个对象和组合对象的使用具有一致性。 9. 装饰模式:装饰模式动态地给对象添加一些额外的职责,提供比继承更具有弹性的扩展方式...

    【Java设计模式-源码】组合模式:构建灵活的树结构

    一、概述 在Java中,组合模式用于将对象组合成树结构,以表示...在软件工程中,组合模式是一种分区设计模式。组合模式描述了一组对象应被视为单个对象的实例来处理。组合的意图是将对象“组合”成树结构,以表示部分

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

    在《设计模式:可复用面向对象软件的基础》一书中,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(通常被称为GoF,Gang of Four)详细阐述了23种经典的设计模式。这些模式分为三类:创建型模式、...

    设计模式:可服用面向对象软件的基础

    3. 组合模式:允许你将对象组合成树形结构,表现得像单个对象。 4. 装饰模式:动态地给一个对象添加一些额外的职责,增加功能而不改变其原有结构。 5. 外观模式:为复杂的子系统提供一个简单的接口。 6. 享元模式:...

    设计模式教材pdf 中文版

    - 组合模式:允许你将对象组合成树形结构来表示“部分-整体”的层次结构。 - 装饰模式:动态地给对象添加一些额外的职责,为对象添加新的行为或属性而不改变其结构。 - 外观模式:提供一个统一的接口,用来访问子...

    23种设计模式(C++).pdf

    - Composite模式:将对象组合成树形结构以表示“部分-整体”的层次结构,使得客户对单个对象和组合对象的使用具有一致性。 - Flyweight模式:运用共享技术有效地支持大量细粒度的对象。 - Facade模式:为子系统中的...

    设计模式——基于C#的工程化实现及扩展

    结构型模式包括但不限于适配器模式、桥接模式、组合模式等。通过这些模式的应用,可以使系统结构更加清晰,易于理解和维护。 #### 第四部分:行为型模式 这部分关注于应用运行过程中算法的提供和通信关系的梳理。...

Global site tag (gtag.js) - Google Analytics