C語言和設計模式(之組合模式)

2021-08-31 20:22:01 字數 960 閱讀 9752

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

組合模式聽說去很玄乎,其實也並不複雜。為什麼?大家可以先想一下資料結構裡面的二叉樹是怎麼回事。為什麼就是這麼乙個簡單的二叉樹節點既可能是葉節點,也可能是父節點?

typedef

struct _nodenode;

那什麼時候是葉子節點,其實就是left、right為null的時候。那麼如果它們不是null呢,那麼很明顯此時它們已經是父節點了。那麼,我們的這個組合模式是怎麼乙個情況呢?

typedef

struct _objectobject;

就是這麼乙個簡單的資料結構,是怎麼實現子節點和父節點的差別呢。比如說,現在我們需要對乙個父節點的operate進行操作,此時的operate函式應該怎麼操作呢?

void

operate_of_parent

(struct _object* pobject)

}

當然,有了parent的operate,也有child的operate。至於是什麼操作,那就看自己是怎麼操作的了。

void

operate_of_child

(struct _object* pobject)

父節點也好,子節點也罷,一切的一切都是最後的應用。其實,使用者的呼叫也非常簡單,就這麼乙個簡單的函式。

void

process

(struct object* pobject)

給我老師的人工智慧教程打call!

C語言和設計模式(組合模式)

又叫做 整體 部分模式 它使樹型結構的問題中,模糊了簡單元素和複雜元素的概念,客戶程式可以像處理簡單元素一樣來處理複雜元素,從而使得客戶程式與複雜元素的內部結構解耦 1 抽象元件類 component 組合中的物件宣告介面,實現所有類共有介面的行為。宣告用於訪問和管理component的子部件的介面...

5 C語言和設計模式(之組合模式)

組合模式聽說去很玄乎,其實也並不複雜。為什麼?大家可以先想一下資料結構裡面的二叉樹是怎麼回事。為什麼就是這麼乙個簡單的二叉樹節點既可能是葉節點,也可能是父節點?cpp view plain copy typedef struct node node 那什麼時候是葉子節點,其實就是left right...

22 C語言和設計模式(之組合模式)

組合模式聽說去很玄乎,其實也並不複雜。為什麼?大家可以先想一下資料結構裡面的二叉樹是怎麼回事。為什麼就是這麼乙個簡單的二叉樹節點既可能是葉節點,也可能是父節點?cpp view plain copy typedef struct node node 那什麼時候是葉子節點,其實就是left right...