`

设计模式==组合模式(Composite)

阅读更多
/*
 *
 * 组合模式(Composite)
 *
 *
 * 把整体和局部的关系用树状结构描述出来,使得客户端把整体对象和局部对象同等看待。
 */

package model;

import java.util.*;

public class TestComposite {
    public static void main(String[] args) {
        Node n1 = new LeafNode(3);
        Node n2 = new LeafNode(4);
        Node n3 = new LeafNode(6);
        Node n4 = new LeafNode(5);
        Node n5 = new LeafNode(2);
        Node n6 = new LeafNode(9);
        Node n7 = new LeafNode(12);
        Node n8 = new LeafNode(7);
        Node n9 = new LeafNode(8);
        Node c1 = new CompositeNode(n1, n2, n3);
        Node c4 = new CompositeNode(n8, n9);
        Node c3 = new CompositeNode(n5, c4);
        Node c2 = new CompositeNode(n4, c3);
        Node c5 = new CompositeNode(n6, n7);
        Node root = new CompositeNode(c1, c2, c5);
        System.out.println(root.getValue());
    }
}

abstract class Node {
    public abstract int getValue();
}

class LeafNode extends Node {
    int value;

    public LeafNode(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }
}

class CompositeNode extends Node {
    private List<Node> children = new ArrayList<Node>();

    public CompositeNode(Node... nodes) {
        for (Node n : nodes) {
            children.add(n);
        }
    }

    public int getValue() {
        int result = 0;
        for (Node n : children) {
            result += n.getValue();
        }
        return result;
    }
}
 
分享到:
评论

相关推荐

    设计模式之组合模式(Composite Pattern)

    将对象组合成树形结构以表示“部分-整体”的层次结构。它使得客户对单个对象和复合对象的使用具有一致性。

    C++设计模式课件20_Composite_组合模式.pdf

    C++设计模式课件20_Composite_组合模式.pdf

    设计模式C++学习之组合模式(Composite)

    设计模式C++学习之组合模式(Composite)

    设计模式_组合模式.zip

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

    JAVA设计模式chm文档

    设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of ...

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

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

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

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

    组合模式 Composite Pattern

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

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

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

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

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

    设计模式文档 chm

    设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of ...

    研磨设计模式(完整带书签).part2.pdf

    第15章 组合模式(Composite) 第16章 模板方法模式(Template Method) 第17章 策略模式(Strategy) 第18章 状态模式(State) 第19章 备忘录模式(Memento) 第20章 享元模式(Flyweight) 第21章 解释器模式...

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

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

    33种JAVA设计模式DEMO

    组合模式(Composite Pattern) 装饰器模式(Decorator Pattern) 外观模式(Facade Pattern) 享元模式(Flyweight Pattern) 代理模式(Proxy Pattern) 3 行为型模式 这些设计模式特别关注对象之间的通信。 责任...

    Head First 设计模式 (九) 迭代器与组合模式(Iterator & Composite pattern) C++实现

    Head First 设计模式 (九) 迭代器与组合模式(Iterator & Composite pattern) C++实现

    GoF 23种设计模式的详解与应用

    结构模式:设计模式之Facade(外观),设计模式之Proxy(代理),设计模式之Adapter(适配器),设计模式之Composite(组合),设计模式之Decorator(油漆工),设计模式之Bridge,设计模式之Flyweight(享元). 行为模式:设计模式之...

    23种Python设计模式示例演示源码包.rar

    23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...

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

    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 支持多种...

    组合模式(Composite Pattern)原理图

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

Global site tag (gtag.js) - Google Analytics