學習版本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):
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設計模式 組合模式
組合模式 將物件組合成樹形結構以表示 整體 部分 的層次關係。組合使得使用者對單個物件和復合物件的使用具有一致性。組合模式的關鍵的就是,元件和組合的整體具有乙個共同的基類。from abc import abcmeta,abstractmethod class comptercompoent met...
組合模式 設計模式 組合模式
1.需求分析 假設要給乙個大公司做辦公管理系統,公司有人力資源部 財務部等,然後公司在其他城市還有分公司,分公司也有自己的人力資源部 財務部等,要求總公司 分公司以及各部分成樹狀結構管理。要完成這麼乙個系統,為了有乙個更好的設計,方便開發的展開,就需要了解乙個設計模式 組合模式。2.定義 將物件組合...
Python與設計模式 組合模式
class company name def init self,name self.name name def add self,company pass def remove self,company pass def display self,depth pass def listduty s...