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

2585人阅读 评论(0) 收藏 举报
 

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与模式》
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5733331次
    • 积分:61056
    • 等级:
    • 排名:第36名
    • 原创:1236篇
    • 转载:326篇
    • 译文:42篇
    • 评论:2890条
    公告
    • * GitHub 上 Star 数最多的 Java 博客 Solo
    • * Golang 黑科技之在线 IDE Wide
    • * 黑客与画家的社区 Sym

    欢迎加入开源技术 Q 群:13139268,让学习和分享成为一种习惯!
    文章分类
    最新评论