公众号:人生只不过是一场投资
温馨提示:每个笔记文档都会绑定一个笔记资源;手机端可能看不到,网页端请自行下载。
引言
在软件开发中,设计模式是一套被反复使用、经过分类和总结的代码设计经验。被广泛用于解决常见的问题。在 Python 脚本设计中,创建对象的方式多种多样,设计模式提供了多种有效的解决方案。组合模式(Composite Pattern)是一种结构型设计模式,将对象组合成树形结构来表示“部分-整体”的层次结构。通过组合模式,客户端可以统一地处理单个对象和组合对象,从而简化了代码的复杂性。它提供了一种透明的方式来处理组合对象和单个对象,使代码更加灵活和可扩展。
应用领域
组合模式在以下场景中尤为适用:
- 层次结构表示:当需要表示树形的层次结构时,例如文件系统、公司组织架构等。
- 统一处理单个对象和组合对象:当需要统一处理单个对象和组合对象时,组合模式可以提供简洁的解决方案。
- 递归结构:当对象之间存在递归关系时,组合模式可以有效地管理和操作这些对象。
- 图形绘制:图形元素的嵌套结构。
- 图形界面:在图形界面开发中,用于表示和管理控件的层次结构。(GUI组件:窗口、面板、按钮等组件的树形结构)
示例一
模拟一个简单的文件系统,其中包含文件和文件夹。文件夹可以包含文件和其他文件夹。
from abc import ABC, abstractmethod
# 抽象基类 - 定义了所有组件的接口,包含一个 `display` 方法。
class FileSystemComponent(ABC):
def __init__(self, name):
self.name = name
@abstractmethod
def display(self, indent=0):
pass
# 叶子节点类 - 实现了 `display` 方法,用于显示文件名。
class File(FileSystemComponent):
def display(self, indent=0):
print(' ' * indent + self.name)
# 组合节点类 - 包含子组件列表,支持