欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式

 更新時間:2022年02月15日 11:33:59   作者:范桂颶  
這篇文章主要介紹了Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式,組合模式即Composite?Pattern,將對象組合成成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu),組合模式使得用戶對單個對象和組合對象的使用具有一致性,下文具有一定的參考價(jià)值,需要的小伙伴可以參考一下

一、組合模式

組合,將多個對象組合成為一個樹狀結(jié)構(gòu),來表示業(yè)務(wù)邏輯上的層次。組合模式使得用戶對單個對象和組合對象的使用具有一致性。

比如,描述一家公司的層次結(jié)構(gòu),那么我們用辦公室來表示節(jié)點(diǎn),則總經(jīng)理辦公司是根節(jié)點(diǎn),下面分別由人事辦公室、業(yè)務(wù)辦公室、生產(chǎn)辦公室、財(cái)務(wù)辦公室,每個辦公室下面可以還有跟小的辦公室,每個辦公室都有職責(zé)、人員數(shù)、人員薪資等屬性;

優(yōu)點(diǎn):

  • 定義了包含基本對象和組合對象的類層次結(jié)構(gòu)。
  • 簡化 Client 代碼,即 Client 可以一致地使用組合對象和單個對象。
  • 更容易增加新類型的組件。

二、應(yīng)用場景

用于設(shè)計(jì)一個有層次等級的系統(tǒng),并處理各層次之間的關(guān)系。

三、代碼示例

實(shí)體角色:

  • 抽象組件(Component
  • 葉子組件(Leaf
  • 復(fù)合組件(Composite
  • 客戶端(Client
class ComponentBase:
? ? """部門抽象出來的基類"""
? ? def __init__(self, name):
? ? ? ? slef.name = name

? ? def add(self, obj):
? ? ? ? pass

? ? def remove(self, obj):
? ? ? ? pass

? ? def display(self, number):
? ? ? ? pass


class Node(ComponentBase):

? ? def __init__(self, name, duty):
? ? ? ? self.name = name
? ? ? ? self.duty = duty
? ? ? ? self.children = []

? ? def add(self, obj):
? ? ? ? self.children.append(obj)

? ? def remove(self, obj):
? ? ? ? self.children.remove(obj)

? ? def display(self, number=1):
? ? ? ? print("部門:{} 級別:{} 職責(zé):{}".format(self.name, number, self.duty))
? ? ? ? n = number+1
? ? ? ? for obj in self.children:
? ? ? ? ? ? obj.display(n)


if __name__ == '__main__':
? ? root = Node("總經(jīng)理辦公室", "總負(fù)責(zé)人")
? ? node1 = Node("財(cái)務(wù)部門", "公司財(cái)務(wù)管理")
? ? root.add(node1)
? ? node2 = Node("業(yè)務(wù)部門", "銷售產(chǎn)品")
? ? root.add(node2)
? ? node3 = Node("生產(chǎn)部門", "生產(chǎn)產(chǎn)品")
? ? root.add(node3)
? ? node4 = Node("銷售事業(yè)一部門", "A產(chǎn)品銷售")
? ? node2.add(node4)
? ? node5 = Node("銷售事業(yè)二部門", "B產(chǎn)品銷售")
? ? node2.add(node5)
? ? root.display()

到此這篇關(guān)于Python設(shè)計(jì)模式結(jié)構(gòu)型組合模式的文章就介紹到這了,更多相關(guān)Python組合模式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)Appium端口檢測與釋放的實(shí)現(xiàn)

    Python實(shí)現(xiàn)Appium端口檢測與釋放的實(shí)現(xiàn)

    這篇文章主要介紹了Python實(shí)現(xiàn)Appium端口檢測與釋放的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python3爬樓梯算法示例

    Python3爬樓梯算法示例

    這篇文章主要介紹了Python3爬樓梯算法,涉及Python基于面向?qū)ο蟮淖址闅v、切片、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Python遍歷目錄的4種方法實(shí)例介紹

    Python遍歷目錄的4種方法實(shí)例介紹

    這篇文章主要介紹了Python遍歷目錄的4種方法實(shí)例介紹,本文講解了使用os.popen運(yùn)行shell列表命令、利用glob模塊、利用os.listdir(推薦)、利用os.walk(推薦)等4種方法,需要的朋友可以參考下
    2015-04-04
  • 基于Flask+websocket實(shí)現(xiàn)一個在線聊天室

    基于Flask+websocket實(shí)現(xiàn)一個在線聊天室

    在今天的互聯(lián)網(wǎng)時代,實(shí)時通信成為了許多應(yīng)用和服務(wù)的核心特色,在本文中,我們將介紹如何使用 Flask 和 Websockets 通過 Flask-SocketIO 框架創(chuàng)建一個簡單的在線聊天室,感興趣的可以跟隨小編一起了解下
    2023-09-09
  • python數(shù)字圖像處理之對比度與亮度調(diào)整示例

    python數(shù)字圖像處理之對比度與亮度調(diào)整示例

    這篇文章主要為大家介紹了python數(shù)字圖像處理之對比度與亮度調(diào)整示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 在ipython notebook中使用argparse方式

    在ipython notebook中使用argparse方式

    這篇文章主要介紹了在ipython notebook中使用argparse方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Django 權(quán)限管理(permissions)與用戶組(group)詳解

    Django 權(quán)限管理(permissions)與用戶組(group)詳解

    這篇文章主要介紹了Django 權(quán)限管理(permissions)與用戶組(group)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 常見的在Python中實(shí)現(xiàn)單例模式的三種方法

    常見的在Python中實(shí)現(xiàn)單例模式的三種方法

    這篇文章主要介紹了常見的在Python中實(shí)現(xiàn)單例模式的三種方法,單例模式在各個編程語言的學(xué)習(xí)中都是需要掌握的基礎(chǔ)知識,需要的朋友可以參考下
    2015-04-04
  • Python 通過打碼平臺實(shí)現(xiàn)驗(yàn)證碼的實(shí)現(xiàn)

    Python 通過打碼平臺實(shí)現(xiàn)驗(yàn)證碼的實(shí)現(xiàn)

    這篇文章主要介紹了Python 通過打碼平臺實(shí)現(xiàn)驗(yàn)證碼的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python中實(shí)現(xiàn)對Timestamp和Datetime及UTC時間之間的轉(zhuǎn)換

    Python中實(shí)現(xiàn)對Timestamp和Datetime及UTC時間之間的轉(zhuǎn)換

    這篇文章主要介紹了Python中實(shí)現(xiàn)對Timestamp和Datetime及UTC時間之間的轉(zhuǎn)換,例子則主要針對Ubuntu等類UNIX系統(tǒng),需要的朋友可以參考下
    2015-04-04

最新評論