十四、组合模式

组合模式,顾名思义就是把多个功能相似的对象组合在一起就像是一个对象的功能一样,代码如下:

package test;

import java.util.ArrayList;
import java.util.List;

/*
 * 组合对象模式
 */
public class CompositeDemo {

    public static void main(String[] args) {
        CompositeParent compositeParent = new CompositeChild1("compositeParent");
        CompositeParent child1 = new CompositeChild1("child1");
        CompositeParent child2 = new CompositeChild1("child2");
        CompositeParent child3 = new CompositeChild1("child3");

        compositeParent.add(child1);
        compositeParent.add(child2);
        compositeParent.add(child3);

        for (CompositeParent row : compositeParent.rows) {
            row.say();
        }
    }

}

abstract class CompositeParent{
    public List<CompositeParent> rows = new ArrayList<>();
    public String name;
    public void say(){};
    public void add(CompositeParent compositeParent){};
}

class CompositeChild1 extends CompositeParent{

    public CompositeChild1(String name) {
        this.name = name;
    }

    @Override
    public void say() {
        System.out.println(name + " say that... ");
    }

    @Override
    public void add(CompositeParent compositeParent) {
        super.rows.add(compositeParent);
    }

}

以上, 我们看到多个child的功能被一个composite的对象组合到了一个list中,调用采用了迭代的方式。组合的方式其实可以又很多变化,不一定要按照这种方式,关键是了解多个类对象的功能转换成一个类对象的理念

时间: 2025-01-11 19:39:32

十四、组合模式的相关文章

Java设计模式菜鸟系列(十二)组合模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39828653 组合模式(Composite):组合模式有时又叫部分-整体模式,将对象组合成树形结构来表示"部分-整体"层次结构.组合模式在处理树形结构的问题时比较方便. 一.uml建模: 二.代码实现 /** * 示例:组合模式有时也称"整合-部分"模式 * * 组合模式在处理树形结构的问题时比较方便 * * 节点 */ class TreeNode { /

JS学习十九天----组合模式

组合模式 前言 我今天又看了一下我自己写的博客,排版咋能这么丑?还能再丑一点吗?!我看了看我同学的排版,那叫一个漂亮啊,我想起来了一句诗:排版写得好,老公回家早!这几天我在修改我的排版,如果大家有什么意见,欢迎来稿!谢谢. 正文 组合模式:把多个对象组成树状结构来表示局部与整体,使得用户可以一样的对待单个对象和对象的组合. 1.可以以相同的方法处理对象的集合与其中的特定子对象.组合对象与组合该对象的对象可实现同一批操作.对组合(Composite)对象执行的操作过程将向下传递到所有的组成对象,使

Java设计模式菜鸟系列(十四)代理模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39856435 代理模式(Composite):代理模式其实就是多一个代理类出来,替原对象进行一些操作.比如咱有的时候打官司需要请律师,因为律师在法律方面有专长,可以替咱进行操作表达咱的想法,这就是代理的意思.代理模式分为两类:1.静态代理(不使用jdk里面的方法):2.动态代理(使用jdk里面的InvocationHandler和Proxy).下面请看示例: 一.静态代理 1.uml建模

JAVA多线程(十四)模式-Active Object

Active Object 通过代理接口,将生产.缓存.消费场景中缓存.消费与生产部分独立出来,通过future模式返回操作结果给生产部分. 缓存部分通过增加调度器来分配数据到执行者,这里可以让执行者由主动切换到被动.可以分离线程和执行策略. 可以由调度器进行负载均衡并可以路由数据处理策略以及执行者不可用时的补偿处理. 适用环境 需要根据数据情况处理多种业务,并且需要一定的调度.均衡.容错的场景. 样例 生产者 创建请求,通过接口调用生产部分消费,根据future同步或异步获取处理结果. 接口

设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)

1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用方法,但通常你会处理一组对象或者集合. 集合不一定是均一的.图形用户界面框架中的 Window 对象可以收集任意数量的控制对象 - Menu.Slider 和 Button.并且,集合的实现可以有多种方式:PHP 数字是一个集合,但也是一个散列表,一个链接列表,一个堆栈以及队列. 例子1:电视遥控器的频道遍历 2.问题 如何操纵任意的对象集合? 如一个列表(Lis

设计模式之十四:备忘录模式(Memento)

备忘录模式: 在不破换封装性的前提下,捕获一个对象的内部状态并将这个状态保存到对象外部,这样这个对象之后可以恢复到保存的状态. Without violating encapsulation, capture and externalize an object's internal state so that the object can be restored to this state later UML图: 主要包括: Memento(Memento):存储Originator的内部状态.

c#设计模式之:组合模式(Composite)

一:引言 在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理,因为目录客园包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象和复合对象在功能上区别,导致在操作过程中必须区分简单对象和复合对象,这样就导致客户调用带来不必要的麻烦,然而作为客户,他们希望能始终一致的对待简单对象和复合对象,组合模式就是解决这样的问题,下面让我们看看组合模式是怎么样解决这个问题的 二.组合模式的详细介绍 2.1组合模式的定义 将对象组合成树形结构以表示“部分-整

第十四讲:组合模式

组合模式的核心是树,数据结构里面的树. 接口:Component.Component是斜写的,在UML里面斜写就表示是一个抽象类.add()增加节点,remove()移除节点,getChild()获得它的子节点. Component可以是抽象类,也可以是一个接口,Leaf是叶子,Composite是组合.不管你是树叶还是节点你都是实现了Component接口.

设计模式(十四):Command命令模式 -- 行为型模式

1.概述 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活. 例子1:电视机遥控器 : 遥控器是请求的发送者,电视机是请求的接收者,遥控器上有一些按钮如开,关,换频道等按钮就是具体命令,不同的按钮对应电视机的不同操作. 2.问题 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧