組合模式 python

2021-06-01 04:51:55 字數 2501 閱讀 4636

組合模式:針對「部分-整體」的層次結構,使得使用者對單個物件和組合物件的使用具有一致性。

#encoding=utf-8

##by panda

#組合模式

def printinfo(info):

print unicode(info, 'utf-8').encode('gbk')

#component:公司抽象類

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 lineofduty(self): #履行職責

pass

#composite:公司類

class concretecompany(company):

childrencompany = none

def __init__(self, name):

company.__init__(self,name)

self.childrencompany =

def add(self, company):

def remove(self, company):

self.childrencompany.remove(company)

def display(self, depth):

printinfo('-'*depth + self.name)

for component in self.childrencompany:

component.display(depth+2)

def lineofduty(self): #履行職責

for component in self.childrencompany:

component.lineofduty()

#leaf:具體職能部門

class hrdepartment(company):

def __init__(self, name):

company.__init__(self,name)

def display(self, depth):

printinfo('-'*depth + self.name)

def lineofduty(self): #履行職責

printinfo('%s\t員工招聘培訓管理' % self.name)

#leaf:具體職能部門

class financedepartment(company):

def __init__(self, name):

company.__init__(self,name)

def display(self, depth):

printinfo('-'*depth + self.name)

def lineofduty(self): #履行職責

printinfo('%s\t公司財務收支管理' % self.name)

def clientui():

root = concretecompany('北京總公司')

root.add(hrdepartment('總公司人力資源部'))

root.add(financedepartment('總公司財務部'))

comp = concretecompany('華東分公司')

comp.add(hrdepartment('華東分公司人力資源部'))

comp.add(financedepartment('華東分公司財務部'))

root.add(comp)

comp1 = concretecompany('南京辦事處')

comp1.add(hrdepartment('南京辦事處人力資源部'))

comp1.add(financedepartment('南京辦事處財務部'))

comp.add(comp1)

comp2 = concretecompany('杭州辦事處')

comp2.add(hrdepartment('杭州辦事處人力資源部'))

comp2.add(financedepartment('杭州辦事處財務部'))

comp.add(comp2)

printinfo('-------公司結構圖-------')

root.display(1)

printinfo('\n-------職責-------')

root.lineofduty()

return

if __name__ == '__main__':

clientui();

類圖

python設計模式 組合模式

學習版本3.5.2 組合模式的目的是將物件組合成樹形結構來表示 整體 部分 的層次結構,組合模式使得使用者對單個物件和組合物件的使用具有一致性。舉個例子 用組合模式去做乙個簡單的資料夾系統 class basefile object def init self,name self.name name...

Python設計模式 組合模式

組合模式 將物件組合成樹形結構以表示 整體 部分 的層次關係。組合使得使用者對單個物件和復合物件的使用具有一致性。組合模式的關鍵的就是,元件和組合的整體具有乙個共同的基類。from abc import abcmeta,abstractmethod class comptercompoent met...

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...