python设计模式(组合模式)

来源:互联网 发布:react json转array 编辑:程序博客网 时间:2024/05/16 14:16

学习版本3.5.2

组合模式的目的是将对象组合成树形结构来表示“整体-部分”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。

举个例子:用组合模式去做一个简单的文件夹系统

class BaseFile(object):    def __init__(self, name):        self.name = nameclass 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




原创粉丝点击