当前位置:   article > 正文

设计模式|组合模式(Composite Pattern)

设计模式|组合模式(Composite Pattern)

什么是组合模式

组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构以表示部分-整体的层次结构。这种模式使得客户端能够以统一的方式处理单个对象和组合对象。

主要角色

  • 组件(Component):定义了组合中对象的通用接口,可以是抽象类或接口。该接口通常包含对子节点的管理操作,比如添加子节点、删除子节点等。
  • 叶子(Leaf):表示组合中的叶子节点对象,叶子节点没有子节点。
  • 组合(Composite):表示组合中的容器节点对象,组合节点可以包含其他组件,即子节点。组合节点通常实现了组件接口中的操作,并且可以递归地调用子节点的操作。

举例

组织关系树

公司组织关系可能分为部门与人,其中人属于部门,有的人有下属,有的人没有下属。如果我们统一将部门、人抽象为组织节点,就可以方便的统计某个部门下有多少人、财务数据等等,而不用关心当前节点是部门还是人。

操作系统的文件夹与文件

操作系统的文件夹与文件也是典型的树状结构,为了方便递归出文件夹内文件数量或者文件总大小,我们最好设计的时候就将文件夹与文件抽象为文件,这样每个节点都拥有相同的方法添加、删除、查找子元素,而不需要关心当前节点是文件夹或是文件。

代码示例:文件系统

考虑一个文件系统的例子,其中文件和文件夹是节点,文件夹可以包含其他文件夹或文件。这是组合模式的一个典型应用场景。

import java.util.ArrayList;
import java.util.List;

// 组件接口
interface FileSystemComponent {
   
    String getName();
    int getSize();
}

// 文件类(叶子节点)
class File implements FileSystemComponent {
   
    private String name;
    priva
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/472490
推荐阅读
相关标签
  

闽ICP备14008679号