合成(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,让学习和分享成为一种习惯!

合成复用原则(Composite Reuse Principle)

10.3.6  合成复用原则(Composite Reuse Principle) 合成(Composition)和聚合(Aggregation)都是关联(Association)的特殊种类。聚...
  • jfkidear
  • jfkidear
  • 2012年02月24日 21:14
  • 1436

组合模式(Composite Pattern)(一):组合模式介绍

一、意图 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite模式使得用户对单个对象和组合对象的使用具有一致性。 二、适用性 • 你想表示对象的...
  • jialinqiang
  • jialinqiang
  • 2013年05月20日 22:30
  • 3591

合成(Composite)模式

 合成模型模式属于对象的结构模式,有时又叫做部分-整体模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。如文件夹与文件就是合成模式的典...
  • crazykiller
  • crazykiller
  • 2007年06月14日 10:30
  • 491

浅谈JAVA设计模式之——组合模式(Composite)

一、概述 将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性。 二、适用性 1.你想表示对象的部分-整体层次结构。 2.你希望用户忽略...
  • l1028386804
  • l1028386804
  • 2015年05月03日 12:44
  • 1970

一.合成(Composite)模式

一、 合成(Composite)模式合成模式有时又叫做部分-整体模式(Part-Whole)。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看...
  • ga34ga34
  • ga34ga34
  • 2005年12月02日 20:07
  • 435

合成(Composite)模式

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

合成(Composite)模式

 对象容器的问题 public interface IBox{ public void Process();}public class SigleBox : IBox{ public void Pro...
  • bendan999999999
  • bendan999999999
  • 2007年03月28日 16:37
  • 319

ImageMagick子命令composite详解

原贴:http://hi.baidu.com/spager/blog/item/bb7eaf0146247b031c95837c.htmlImageMagick子命令composite详解2008-0...
  • chinalinuxzend
  • chinalinuxzend
  • 2008年08月06日 19:43
  • 4142

[设计模式]_[中级]_[组合模式(Composite)分析与总结]

序: 组合模式在实际开发中实在是使用的很频繁,很实用. 抽象场景: 1. 你想表示对象的部分-整体层次结构.[原书] -- 如果想对某些对象打包统一处理时,比如用std::vector. 2. ...
  • infoworld
  • infoworld
  • 2015年09月13日 23:43
  • 1513

设计模式学习笔记--合成(Composite)模式

合成(Composite)模式,有时又叫做部分-整体(Part-Whole)模式。合成模式将对象组织到树结构中,可以用来描述整体与部分的关系。合成模式可以使客户端将单纯元素与复合元素同等看待。合成模式...
  • puma_dong
  • puma_dong
  • 2014年04月02日 22:44
  • 1488
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:合成(Composite)模式的Java实现[00原创]
举报原因:
原因补充:

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