您的位置:首页 > 编程语言 > Java开发

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

2007-09-22 19:54 429 查看

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与模式》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: