设计模式-组合模式(Component)

本文详细介绍了设计模式中的组合模式,包括其定义、结构和类图。通过公司管理系统的案例,展示了如何使用组合模式实现部分-整体的层次结构。同时,讨论了组合模式的优点和缺点,例如一致性使用和增加新构件的挑战。文章还提到了JDK源码中组合模式的应用,如List、Map、Set的addAll方法。
摘要由CSDN通过智能技术生成

组合模式

定义

将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和组合对象的使用具有一致性。

结构

Component(抽象构件):为叶子构件和组合构件声明统一的接口,它可以是抽象类也可以是接口。

Leaf(叶子构件):它在组合结构中表示叶子节点对象,它没有子节点,所以对于操作子节点的接口方法通过抛出异常来说明。

Composite(容器构件):它是组合结构中的容器节点对象,它的子节点可以使叶子节点对象,也可以是容器节点对象,它提供了一个list集合用于存放子节点。

类图

Component:

abstract class Component {
	protected String name;
	public abstract void add(Component c);
	public abstract void remove(Component c);
	public abstract Component getChild(int i);
	public abstract void display();
}

Leaf:

public class Leaf extends Component{

	public Leaf(String name){
		this.name = name;
	}
	
	@Override
	public void add(Component c) {
		System.err.println("can not add");
	}

	@Override
	public void remove(Component c) {
		System.err.println("can not remove");
	}

	@Override
	public Component getChild(int i) {
		System.err.println("can not getChild");
		return null;
	}

	@Override
	public void disp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值