学习版本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