合成(Composite)模式的Java实现[00原创]

原创 2007年09月22日 19:54:00
 

1. 类图



2. Java实现代码

package cn.edu.ynu.sei.composite;

/**
 * 抽象组件角色
 * 
 * 
@author 88250
 * 
@version 1.0.0, 2007-9-4
 
*/
public interface Component
{
    
/**
     * 返回自己的实例
     * 
@return
     
*/
    
public Composite getComposite();
    
    
/**
     * 某个业务方法
     
*/
    
public void sampleOperation();
}

package cn.edu.ynu.sei.composite;

import java.util.Enumeration;
import java.util.Vector;

/**
 * 树枝角色
 * 
 * 
@author 88250
 * 
@version 1.0.0, 2007-9-4
 
*/
public class Composite implements Component
{
    
private Vector<Component> componentVector = new Vector<Component>();
    
    @Override
    
public Composite getComposite()
    {
    
return this;
    }

    @Override
    
public void sampleOperation()
    {
    Enumeration
<Component> enumeration = components();
    
    
while (enumeration.hasMoreElements())
    {
        enumeration.nextElement().sampleOperation();
    }
    }
    
    
/**
     * 聚集管理方法,增加一个自构件对象
     * 
@param component
     
*/
    
public void add(Component component)
    {
    componentVector.addElement(component);
    }
    
    
/**
     * 聚集管理方法,删除一个子构件对象
     * 
@param component
     
*/
    
public void remove(Component component)
    {
    componentVector.removeElement(component);
    }

    
/**
     * 聚集管理方法,返回聚集的Enumeration对象
     * 
@return
     
*/
    
private Enumeration<Component> components()
    {
    
return componentVector.elements();
    }
    
}

package cn.edu.ynu.sei.composite;

/**
 * 树叶角色
 * 
 * 
@author 88250
 * 
@version 1.0.0, 2007-9-4
 
*/
public class Leaf implements Component
{

    @Override
    
public Composite getComposite()
    {
    
// TODO Auto-generated method stub
    return null;
    }

    @Override
    
public void sampleOperation()
    {
    
// TODO Auto-generated method stub

    }

}

3. 总结

这是合成(组合)模式的安全形式实现。需要注意的是,必须强调是在“部分—整体”关系成立时才可以考虑使用合成模式。

4. 参考文献

  《Design Patterns》、《Java与模式》
版权声明:欢迎加入开源技术 Q 群:242561391,让学习和分享成为一种习惯!

相关文章推荐

《Java与模式》学习笔记:设计模式——合成(Composite)模式

合成模式 合成(Composite)模式属于对象的结构模式。 1.定义:合成模式将对象组织到树结构中,可以用来描述整体和部分的关系。合成模式可以使客户端将单纯的元素和复合的元素同等看待。 注意:...

合成模式(Composite)-山下的养牛场

合成模式:描述整体与部分的关系,将对象组织到树结构中,最典型的是文件与文件夹系统,分为安全式与透明式。 例子:我家有座山,山下有个养牛场,牛分奶牛与黄牛,每头牛都有编号 安全式: 类图: 抽象构建...
  • wugouzi
  • wugouzi
  • 2015年12月07日 18:26
  • 248

合成(Composite)模式

一、 合成(Composite)模式 合成模式有时又叫做部分-整体模式(Part-Whole)。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同...

合成模式/Composite

合成模式/Composite 意图/适用场景: 合成模式又叫做部分-整体模式。它将对象组织到树结构中,可以用来描述整体与部分的关系。最显著的特点就是把整体与部分都抽象出统一的接口,这样客户端就可以...
  • fyzhao
  • fyzhao
  • 2013年08月27日 12:00
  • 576

合成模式(Composite) -- (模式之六)

1:背景故事  在来看合成模式之前我们先来看看一个故事,想必大家都听过, 这里我从网上看见一个网友的举的例子,因为觉得好所以也就拿过来一用;故事如下: 从前有个山,山里有个庙,庙里有个老和尚在给小...

讲故事学设计模式-合成(Composite)模式

合成模式相对简单,但是它却被广泛设计者使用,例如SWT,Eclipse等等。它主要是构建一棵树,并且可以通过一个统一的方法访问这棵树。 1、类图 我们将实现如下树结构,请看源代码。 2、代码 ...

Java 实现组合(Composite)模式

类图 /** * 树 整体 * * @author stone * */ public class Tree { private TreeNode root; //根节点 pu...

Java实现(09)——组合模式(Composite Pattern)

组合模式将一组对象以树的形式看成一个整体。 import java.util.ArrayList; import java.util.List; /** * Created by wan...
  • WAN_EXE
  • WAN_EXE
  • 2016年12月17日 09:49
  • 261

HTML5之SVG详解(一) 时间 2012-12-21 19:49:00 博客园-原创精华区 原文 http://www.cnblogs.com/hupeng/archive/2012/12/2

1、背景 SVG是Scalable Vector Graphics的缩写,意为可缩放矢量图形。1998年,万维网联盟成立了一个工作组,研发一种通过XML来表现矢量图形的技术——SVG!由于SVG...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:合成(Composite)模式的Java实现[00原创]
举报原因:
原因补充:

(最多只允许输入30个字)