组合模式(二)

80 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

上一篇文章我们主要使用文字介绍了组合模式的相关概念,这篇文章我们来介绍组合模式的组成角色以及每个角色的具体的作用。

组合模式的构成角色

通过上一篇文章的内容我们知道,组合模式的一个特点就是它是以树型模式组合对象的。其实树形结构在我们的日常生活中是非常常见的,比如某个部门的组织结构,软件菜单等等,对于这种树形结构,他们的叶子节点和父节点在行为上基本是一致的。

对于这种结构,我们引入了组合模式,组合模式就是整体与部分的关系,组合模式可以抽象出三种角色,分别为:

  1. 抽象构建角色(Component)
  2. 树枝构建角色(Composite)
  3. 树叶构建角色(Leaf)

然后我们来看一下它的类图: Screen Shot 2022-06-22 at 10.21.23 AM.png

对于这三种角色,它们的作用分别为:

  1. 抽象构件角色(Component):它为组合中的对象声明接口。就是说,为树叶构件和树枝构件声明公共接口,并实现它们的默认行为。

  2. 树叶构件角色(Leaf):通过名字我们就可以知道,这个角色就是一个“树”中的“叶子”,它在组合模式中表示叶节点对象,这个角色没有子节点,实现抽象构件角色声明的接口。

  3. 树枝构件角色(Composite):在组合模式中表示分支节点的对象,它有子节点,也实现抽象构件角色声明的接口;主要用来存储和管理子部件,通常包含Add/Remove/GetChild等方法。

总结

这篇文章我们讲了组合模式的组成部分,我们首先需要知道组合模式的作用,就是把各个对象组合成一个树形结构;同时记住它的各个组成角色,第一个角色是用来定义接口的,剩下两个接口是作为实际的组成部分来行使功能的。这样就不难理解接下来的具体的代码了。

接下来我们会找一个具体的场景,使用实际的代码来做分析。