Composite:組合模式,儅需要組合兩個類的時候,比如畫圖:需要畫直綫和點,那麽如果分別調用畫直綫和調用畫點的時候,用起來,會覺得很麻煩,如果包在一起,這個東西既可以讓你用來畫直綫又可以畫點,不是很好用嗎?
兩者的設計分別實現是:
前者:class Line{draw(){draw a line}} class Point{draw(){draw point}}
後者:class Component}{vec,vec,draw(Line){},draw(Point){}}
這樣就可以畫一個包含了綫和點的圖形了;
實戰舉例:
場景是:20個箱子,n個物品(可以增加和刪除),操作:把物品放入箱子,物品可以放入和取走,有多個箱子,需要管理物品(資訊,在哪個箱子)和箱子(資訊,箱内物品資訊);
處理的時候,兩者應該是互相獨立,同時又有交集的方式,所以處理的時候,就會考慮交集怎麽辦?這時候,使用了組合模式,用一個管理兩者的組合類來處理兩者;設計和實現的時候,我還沒學習組合模式,但是最近看到這個模式的時候,想起這個事情,因爲處理這個事情的時候,思考了一段時間才想到這樣比較好:我需要單獨處理物品,又需要單獨處理箱子,所以這兩個必須有獨立的類來處理,同時又要處理交集的事情,所以必須有處理交集的類,自然就出現了組合模式了;