自学内容网 自学内容网

设计模式|组合模式(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

原文地址:https://blog.csdn.net/weixin_44435110/article/details/137941143

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!