溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中結構型組合模式的示例分析

發(fā)布時間:2022-02-15 14:47:59 來源:億速云 閱讀:107 作者:小新 欄目:開發(fā)技術

這篇文章將為大家詳細講解有關Python中結構型組合模式的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、組合模式

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

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

優(yōu)點:

  • 定義了包含基本對象和組合對象的類層次結構。

  • 簡化 Client 代碼,即 Client 可以一致地使用組合對象和單個對象。

  • 更容易增加新類型的組件。

二、應用場景

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

三、代碼示例

Python中結構型組合模式的示例分析

實體角色:

  • 抽象組件(Component

  • 葉子組件(Leaf

  • 復合組件(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("部門:{} 級別:{} 職責:{}".format(self.name, number, self.duty))
        n = number+1
        for obj in self.children:
            obj.display(n)


if __name__ == '__main__':
    root = Node("總經(jīng)理辦公室", "總負責人")
    node1 = Node("財務部門", "公司財務管理")
    root.add(node1)
    node2 = Node("業(yè)務部門", "銷售產(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()

關于“Python中結構型組合模式的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI