Linux安全网 - Linux操作系统_Linux 命令_Linux教程_Linux黑客

绿色网站无广告
会员投稿 投稿指南 本期推荐:
搜索:
您的位置: Linux安全网 > Linux集群 > Architecture > » 正文

组合模式--Composite

来源: jtlyuan 分享至:

Composite模式定义:
将对象以树形结构组织起来,以达成“部分-整体” 的层次结构,使得客户端对单个对象和组合对象的使用具有一致性.

Composite好处:
1.使客户端调用简单,客户端可以一致的使用组合结构或其中单个对象,用户就不必关系自己处理的是单个对象还是整个组合结构,这就简化了客户端代码。
2.更容易在组合体内加入对象部件. 客户端不必因为加入了新的对象部件而更改代码。



Component:为参加组合的对象声明一个公共接口,不管是组合还是叶节点。

public abstract class Component 
{
	public void add(Component component) 
	{
		throw new UnsupportedOperationException();
	}

	public void remove(Component component) 
	{
		throw new UnsupportedOperationException();
	}

	public Component getChild(int i) 
	{
		throw new UnsupportedOperationException();
	}

	public void operation() 
	{
		throw new UnsupportedOperationException();
	}
}

Leaf:在组合中表示叶节点对象,叶节点没有子节点。

public class Leaf extends Component
{
	@Override
	public void operation()
	{
		//your code
	}
}

Composite:表示参加组合的有子对象的对象,并给出树枝构件的行为。

public class Composite extends Component
{
	ArrayList<Component> components = new ArrayList<Component>();
	
	@Override
	public void add(Component component)
	{
		components.add(component);
	}
	
	@Override
	public void remove(Component component)
	{
		components.remove(component);
	}
	
	@Override
	public Component getChild(int i)
	{
		return components.get(i);
	}
	
	@Override
	public void operation()
	{
		for (Component component : components)
		{
			component.operation();
		}
	}
}


适用性:

以下情况使用Composite模式:

1. 你想表示对象的部分-整体层次结构。

2. 你希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所有对象。

优点:

1. 组合模式可以很容易的增加新的构件。

2. 使用组合模式可以使客户端变的很容易设计,因为客户端可以对组合和叶节点一视同仁。

缺点:

1. 使用组合模式后,控制树枝构件的类型不太容易。

2. 用继承的方法来增加新的行为很困难。

  • 大小: 99.7 KB
  • 查看图片附件

Tags:
分享至:
最新图文资讯
1 2 3 4 5 6
验证码:点击我更换图片 理智评论文明上网,拒绝恶意谩骂 用户名:
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 发展历史