`
youyu4
  • 浏览: 440520 次
社区版块
存档分类
最新评论

Java设计模式七:组合模式(Composite Pattern)

 
阅读更多

组合模式又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解藕.

组合模式可以优化处理递归或分级数据结构.有许多关于分级数据结构的例子,使得组合模式非常有用武之地.

类图:



组成部分:
Component: 为参加组合的对象声明一个公共接口, 不管是组合还是叶结点.
Leaf: 在组合中表示叶子结点对象,叶子结点没有子结点.
Composite: 表示参加组合的有子对象的对象, 并给出树枝购件的行为.

实例:
public abstract class FolderComponent
{
    private String name;

    public String getName()
    {
        return name;
    }

    public void setName(final String name)
    {
        this.name = name;
    }

    public FolderComponent()
    {
    }

    public FolderComponent(final String name)
    {
        this.name = name;
    }

    public abstract void add(FolderComponent component);

    public abstract void remove(FolderComponent component);

    public abstract void display();
}

public class FileLeaf extends FolderComponent
{
    public FileLeaf(final String name)
    {
        super(name);
    }

    @Override
    public void add(final FolderComponent component)
    {
        //...
    }

    @Override
    public void remove(final FolderComponent component)
    {
        //...
    }

    @Override
    public void display()
    {
        System.out.println("FileLeaf:" + this.getName());
    }
}

public class FolderComposite extends FolderComponent
{
    private final List<FolderComponent> components;

    public FolderComposite(final String name)
    {
        super(name);
        this.components = new ArrayList<FolderComponent>();
    }

    public FolderComposite()
    {
        this.components = new ArrayList<FolderComponent>();
    }

    @Override
    public void add(final FolderComponent component)
    {
        this.components.add(component);
    }

    @Override
    public void remove(final FolderComponent component)
    {
        this.components.remove(component);
    }

    @Override
    public void display()
    {
        System.out.println("FolderComposite---name:" + this.getName());
        for (final FolderComponent component : components)
        {
            System.out.println("FolderComposite---component-name:" + component.getName());
        }
    }
}

public class Client
{
    public static void main(final String[] args)
    {
        final FolderComponent leaf = new FileLeaf("runnable file");
        leaf.display();

        final FolderComponent folder = new FolderComposite("new folder");
        folder.add(new FileLeaf("content1 in new folder"));
        folder.add(new FileLeaf("content2 in new folder"));
        folder.display();
    }
}

结果:
FileLeaf:runnable file
FolderComposite---name:new folder
FolderComposite---component-name:content1 in new folder
FolderComposite---component-name:content2 in new folder

分享到:
评论

相关推荐

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

    **设计模式面面观:组合模式(Composite Pattern)** 组合模式是软件工程中的一种结构型设计模式,它允许我们以树形结构来表示部分与整体的关系,使得客户端代码可以一致地处理单个对象和对象组合。在组合模式中,...

    组合模式 Composite Pattern

    **组合模式**(Composite Pattern)是一种常用的结构型设计模式,主要用于构建具有层次结构的对象系统。它允许客户端以一致的方式处理单个对象和组合对象,简化了高层模块的调用。通过组合模式,可以将多个对象组织成...

    Java设计模式刘伟书本中模拟考试答案

    在《Java设计模式》这本书的模拟试题及其参考答案中,涉及了多条设计模式的知识点,以及它们的应用场景和实现方法。现在将这些知识点详细地解释如下: 1. 开闭原则(Open-Closed Principle, OCP): 开闭原则是面向...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    java设计模式详解,java design pattern

    Java设计模式详解涉及到23种设计模式,这些设计模式可以根据其目的和范围被划分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)。下面将详细...

    JAVA设计模式-chm版

    Java设计模式是软件开发中的一种最佳实践,它总结了在解决特定问题时程序员们经常采用的有效方法。这个“JAVA设计模式-chm版”资源显然包含了关于Java设计模式的详细信息,便于理解和应用。设计模式是对常见问题的...

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

    组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构以表示“部分-整体”的层次结构。这种模式使得客户端可以统一对待单个对象和对象组合。在组合模式中,有两种基本类型的对象:叶...

    JAVA 23种设计模式(全).Design Pattern_Java模式

    总结来说,"JAVA 23种设计模式(全).Design Pattern_Java模式"这份资源是学习和掌握Java设计模式的重要工具。通过深入学习并熟练应用这些模式,开发者可以写出更高效、更易于维护的代码,同时提升个人的编程技能和...

    JAVA design pattern-java设计模式

    总结来说,"JAVA design pattern-java设计模式"的CHM文件是深入学习和理解Java设计模式的宝贵资源,通过学习和应用这些模式,开发者可以提高其代码质量,优化系统架构,从而更好地应对复杂的软件开发挑战。

    Java设计模式(第二版)中文版

    ### Java设计模式(第二版)中文版 #### 思维框架的培养;对新手与码农均适用 在软件开发领域,设计模式是一种被广泛采用的解决方案,它可以帮助开发者更好地组织代码、解决常见问题,并提高软件的整体质量和可维护...

    java设计模式代码

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的模板或最佳实践。GOF设计模式,全称为GoF(Gang of Four)设计模式,源自Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位...

    java设计模式---诙谐易懂版

    根据给定文件内容,以下是关于Java设计模式的知识点说明: 1. 策略模式(Strategy Pattern)是一种行为设计模式,允许在运行时选择算法的行为。策略模式的意图是定义一系列算法,将每个算法封装起来,并使它们可以...

    33种JAVA设计模式DEMO

    这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。 适配器模式(Adapter Pattern) 桥接模式(Bridge Pattern) 过滤器模式(Filter、Criteria Pattern) 组合模式...

    Java设计模式经典搞笑珍藏

    15. **组合模式(CompositePattern)**:将对象组合成树形结构以表示“部分-整体”的层次结构。 16. **观察者模式(ObserverPattern)**:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖...

    Java设计模式代码,设计模式系列所有示例代码

    Java设计模式尤其重要,因为Java是广泛应用的开发语言,尤其在企业级应用中占据主导地位。本资源“Java设计模式代码,设计模式系列所有示例代码”为学习者提供了实际操作设计模式的宝贵机会,使理论与实践相结合,...

    Java的23种设计模式

    Java设计模式是指在Java编程语言中,根据软件工程原理,总结出的一系列在特定情况下用于解决特定问题的模板化代码。设计模式分为三大类:创建型、结构型和行为型,它们包含共23种不同的设计模式。 创建型模式关注的...

    java设计模式源码-DesignPattern:设计模式(Java实现源码)

    java ...组合模式(compositePattern) 装饰器模式(decoratorPattern) 外观模式(facadePattern) 享元模式(flyweightPattern) 代理模式(proxyPattern) 责任链模式(chainPattern) 命令模式(commandPatter

    软件设计模式作业+答案

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

    Composite Pattern(组合模式)

    **组合模式**是一种设计模式,属于结构型模式,它允许我们表示部分-整体层次结构,使得客户端代码可以统一地处理单个对象和对象组合。在组合模式中,对象和组合对象可以通过相同的接口进行操作,这样就消除了处理...

Global site tag (gtag.js) - Google Analytics