C++设计模式之组合模式

组合模式

组合模式是组合多个对象形成的树形结构以表示具有整体-部分关系的层次结构,对单个对象(叶子对象)与组合对象(容器对象)的使用具有一致性,因此组合模式又称为部分-整体模式,它是一种对象结构型模式。

适用场景

  1. 在具有整体与部分的层次结构中,希望通过一种方式忽略整体-部分的差异,客户端可以一致的对待。
  2. 在一个使用面向对象的语言开发系统中需要处理一个树形结构。
  3. 在一个系统中能分理叶子对象 与容器对象,而且他们类型不固定,需要增加一些新的类型。

组合模式结构图

在这里插入图片描述

  1. componet(抽象组件):为叶子构件与容器构件对象声明提供了接口,该角色中可以包含所有子类的共有行为与声明和实现。
  2. Leaf(叶子组件):在组合模式结构中表示为叶子结点对象,叶子组件没有子节点,它实现了父类的定义行为。
  3. Composite(容器组件):在组合模式中表示为容器对象,它包含了子节点,或者容器节点,其子节点中可以包含叶子节点或者容器节点。它提供了一个集合用于存储子节点,实现了在抽象组件中的定义的方法,包括那些访问以及管理子构件的方法,在其业务方法中可以递归调用子节点的业务方法。

代码实现

可以参考我的资源去下载。

优缺点

优点:

  1. 能清楚地定义一个复杂系统的层次结构,方便对层次结构进行管理。
  2. 可以增加新的容器对象与叶子对象,符合开闭原则。
  3. 为树形结构对象提供了灵活的解决方案,通过叶子对象与容器对象递归组合可以形成复杂的树形结构,但对树形结构的控制却非常简单。

缺点:
在增加新的类型时很难对容器中的构件类型进行限制,他们拥有相同的抽象层,所以对某个容器类型去限制只具有某个指定的叶子对象或者容器对象是很复杂的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长,行则降至

无聊,打赏求刺激而已

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值