Python语言设计模式:组合模式详解
更多内容请见: python3案例和总结-专栏介绍和目录
文章目录
-
- 一、组合模式概述
-
- 1.1 什么是组合模式?
- 1.2 为什么需要组合模式?
- 1.3 组合模式的结构
- 1.4 组合模式的优缺点
- 1.4 组合模式的应用场景
- 二、用python实现组合模式
-
- 2.1 代码实现:文件系统模拟
- 2.2 执行结果
- 2.3 代码分析
一、组合模式概述
1.1 什么是组合模式?
组合模式是一种结构型设计模式,它的核心思想是将对象组合成树形结构以表示“部分-整体”的层次结构。最妙的是,组合模式能让客户端统一处理单个对象(叶子节点)和组合对象(容器节点),客户端无需关心自己处理的是一个元素还是整个组合。
简单来说:就是让你可以用一致的方式处理个别对象以及由它们组成的组合。
1.2 为什么需要组合模式?
一个生活中的例子:想象一下你在操作一个文件系统:
- 一个文件(File)是最小的单元,它不能再包含其他东西。
- 一个文件夹(Folder)可以包含文件,也可以包含其他文件夹。
现在,假设你要写一个程序来计算某个目录下所有文件的总大小。你会怎么做?
- 如果是文件,直接返回它的大小。
- 如果是文件夹,你需要遍历它里面的所有内容(可能是文件,也可能是文件夹),然后递归地计算它们的大小,最后加起来。
对于调用者来说,无论是文件还是文件夹,他都想调用一个叫get_size()的方法来获取大小。组合模式就是为了让这件事变得自然而优雅。
1.3 组合模式的结构
组合模式主要包含三个角色:
