日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

八、结构模式之组合(Composite)模式

發布時間:2023/12/9 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 八、结构模式之组合(Composite)模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

組合模式屬于對象的結構模式,有時又叫做部分-整體模式,組合模式將對象組織到樹結構中,可以用來描述整體與部分的聯系。其可以使客戶端將單純元素和組合元素同等對待。

當需求中是體現部分與整體層次的結構時,以及你希望用戶可以忽略組合對象與單個對象的不同,統一地使用組合結構中的所有對象時,就應該考慮使用組合模式了。

組合模式(或叫合成模式)是將對象組合成樹形結構以表示部分-整體的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。

注:組合模式是使用其中有個組件成員的vector或者list,然后通過Add接口添加組件到組件vector中。

組合模式的好處是基本對象可以組合成組合對象,而組合對象有可以被組合,這樣不斷的遞歸,可以包含層級的結構。同時,客戶端代碼中用到基本對象的地方都可以使用組合對象。

其結構如下:

其角色分為:

抽象構建角色Component:抽象角色,定義接口。

樹葉構建角色Leaf:代表參加組合的樹葉角色,樹葉沒有下級對象

樹枝構建角色Composite:參加組合的組合對象,有下級對象。

合成模式分為:透明式和安全式兩種模式

透明方式

?? 透明方式是在Component中聲明所有的結構。這樣leaf和Composite都有相同的結構,從而可以將Leaf和Coomposite同等對待。但是這個選擇的缺點是不夠安全。因為樹葉類和合成類對象本質上是不同的。樹葉節點沒有下個層次的對象的。

安全模式

?? 安全方式是Compisite中聲明用來管理子類的結構。這樣leaf中就沒有了管理子類對象的結構(Leaf確實也是沒有子類對象的)。但是該方式的缺點是不夠透明,這樣樹葉類和合成類的接口就不一致了,不能同等對待。

這兩個方式各有優缺點,需要根據具體情況作決定使用哪種方式。

?

?

組合模式和裝飾模式的區別:
組合模式和裝飾模式有些相似,都是層級的封裝結構。但是組合模式是解決組合對象和單個對象的層級結構問題。而裝飾模式是為了動態的給對象添加職責。而且對于安全模式的組合模式,
其葉子節點和枝節點的接口不一致。而裝飾模式的接口都是一致的。

轉載于:https://www.cnblogs.com/lovemdx/p/3306417.html

總結

以上是生活随笔為你收集整理的八、结构模式之组合(Composite)模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。