学习版本3.5.2
组合模式的目的是将对象组合成树形结构来表示“整体-部分”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。
举个例子:用组合模式去做一个简单的文件夹系统
class BaseFile(object):
def __init__(self, name):
self.name = name
class MyFolder(BaseFile):
def __init__(self, name):
super(MyFolder,self).__init__(name)
self.filelist = []
def add(self, basefile):
self.filelist.append(basefile)
def display(self, *num):
if len(num) > 0:
n = num[0]
else:
n = 0
print("-"*n+self.name+"-"*n)
print("="*20)
n += 1
for f in self.filelist:
f.display(n)
class MyFile(BaseFile):
def add(self, basefile):
print("can not put a file into a file")
def display(self, *num):
if len(num) > 0:
n = num[0]
else:
n = 0
print("-"*n+self.name)
if __name__ == "__main__":
folder1 = MyFolder("folder1")
folder11 = MyFolder("folder11")
folder111 = MyFolder("folder111")
folder12 = MyFolder("folder12")
file1 = MyFile("file1")
file2 = MyFile("file2")
file3 = MyFile("file3")
file4 = MyFile("file4")
folder1.add(folder11)
folder1.add(folder12)
folder11.add(folder111)
folder1.add(file1)
folder11.add(file2)
folder12.add(file3)
folder111.add(file4)
folder11.display()
运行结果
folder11
====================
-folder111-
====================
--file4
-file2
这篇博客介绍了如何利用Python的组合模式设计一个简单的文件系统。通过组合模式,可以将文件和文件夹对象组合起来,形成层级结构,并提供一致的操作接口。示例中展示了如何创建文件夹、添加子文件夹和文件,以及打印文件系统的结构。

被折叠的 条评论
为什么被折叠?



