Python設計模式 組合模式

2021-10-23 02:05:50 字數 2377 閱讀 5446

組合模式:將物件組合成樹形結構以表示「整體-部分」的層次關係。組合使得使用者對單個物件和復合物件的使用具有一致性。

組合模式的關鍵的就是,元件和組合的整體具有乙個共同的基類。

from abc import abcmeta,abstractmethod

class

comptercompoent

(metaclass=abcmeta)

:def

__init__

(self,name)

: self._name = name

@abstractmethod

defshowinfo

(self)

:pass

class

cpu(comptercompoent)

:def

__init__

(self,name)

:super()

.__init__(name)

defshowinfo

(self)

:print

("高階cpu"

)class

memorycard

(comptercompoent)

:def

__init__

(self,name)

:super()

.__init__(name)

defshowinfo

(self)

:print

("高階記憶體條"

)class

harddisk

(comptercompoent)

:def

__init__

(self,name)

:super()

.__init__(name)

defshowinfo

(self)

:print

("1t的大硬碟"

)class

graphcard

(comptercompoent)

:def

__init__

(self,name)

:super()

.__init__(name)

defshowinfo

(self)

:print

("高階顯示卡"

)class

computercomposite

(comptercompoent)

:def

__init__

(self,name)

:super()

.__init__(name)

self._compoents =

defshowinfo

(self)

:print

("%s由以下部分組成"

%(self._name)

)for element in self._compoents:

element.showinfo(

)def

addcomponent

(self,component)

:class

computer

(computercomposite)

:def

__init__

(self,name)

:super()

.__init__(name)

defshowinfo

(self)

:print

("我是電腦:"

)super()

.showinfo(

)def

test()

: computer = computer(

"ibm"

) cpu = cpu(

"i7"

) computer.addcomponent(cpu)

memory = memorycard(

"記憶體條"

) computer.addcomponent(memory)

harddisk = harddisk(

"硬碟"

) computer.addcomponent(harddisk)

graphcard = graphcard(

"顯示卡"

) computer.addcomponent(graphcard)

computer.showinfo(

)test(

);

執行結果:

我是電腦:

ibm由以下部分組成

高階cpu

高階記憶體條

1t的大硬碟

高階顯示卡

aaa

python設計模式 組合模式

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

組合模式 設計模式 組合模式

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