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

      網(wǎng)友投稿 876 2022-05-30

      文章目錄

      模式意圖

      模式定義

      模式角色

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

      模式分析

      實(shí)際例子

      模式應(yīng)用

      模式意圖

      介紹模式定義定義之前先介紹一下組合模式的意圖。其實(shí)就是將對(duì)象組合成整體-部分層次的樹形結(jié)構(gòu),客戶端調(diào)用時(shí),對(duì)于調(diào)用容器對(duì)象或者說(shuō)組合對(duì)象(“樹枝”)和單個(gè)對(duì)象(“樹葉”)是一致的。

      模式定義

      組合模式(Composite Pattern):組合多個(gè)對(duì)象形成樹形結(jié)構(gòu)來(lái)表示“整體-部分”的結(jié)構(gòu)層次。

      組合模式又稱“整體-部分”(Part-Whole)模式,屬于對(duì)象結(jié)構(gòu)型的設(shè)計(jì)模式。將對(duì)象組合在組件類里,用于描述整體和部分的關(guān)系。組合模式對(duì)單個(gè)對(duì)象和組合對(duì)象或者說(shuō)容器對(duì)象的使用具有一致性。

      模式角色

      組合模式包括如下角色:

      Component:抽象構(gòu)件

      Leaf:葉子構(gòu)件

      Composite:容器構(gòu)件

      Client:客戶類

      模式分析

      組合模式定義一個(gè)抽象的構(gòu)件類,主要用于被客戶端調(diào)用,客戶調(diào)調(diào)用時(shí)就不需要關(guān)心是單個(gè)對(duì)象還是容器對(duì)象了。

      容器對(duì)象和抽象構(gòu)件類是一種聚合關(guān)系,容器對(duì)象里即可以包含葉子,也可以包含容器,遞歸組合,從而形成一個(gè)樹形結(jié)構(gòu)。

      實(shí)際例子

      例子來(lái)自:《設(shè)計(jì)模式》一書

      抽象構(gòu)件類:

      public abstract class Component { public abstract void add(Component c); public abstract void remove(Component c); public abstract Component getChild(int i); public abstract void operation(); }

      1

      2

      3

      4

      5

      6

      7

      8

      葉子類:

      public class Leaf extends Component { public void add(Component c) { //異常處理或錯(cuò)誤提示 } public void remove(Component c) { //異常處理或錯(cuò)誤提示 } public Component getChild(int i) { //異常處理或錯(cuò)誤提示 } public void operation() { //實(shí)現(xiàn)代碼 } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      容器類:

      public class Composite extends Component { private ArrayList list = new ArrayList(); public void add(Component c) { list.add(c); } public void remove(Component c) { list.remove(c); } public Component getChild(int i) { (Component)list.get(i); } public void operation() { for(Object obj:list) { ((Component)obj).operation(); } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      模式應(yīng)用

      組合模式應(yīng)用

      XML文檔解析

      JDK的AWT/Swing

      容器

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Java學(xué)習(xí)之Maven安裝與配置
      下一篇:Java零基礎(chǔ)入門:概論(一)
      相關(guān)文章
      婷婷亚洲综合一区二区| 亚洲综合综合在线| 国产成人精品日本亚洲网址| 亚洲欧洲第一a在线观看| 亚洲综合网站色欲色欲| xvideos亚洲永久网址| 久久精品亚洲日本波多野结衣| 亚洲欧美一区二区三区日产| 日本亚洲精品色婷婷在线影院| 亚洲一区二区三区播放在线| 亚洲午夜电影在线观看| 亚洲国产成人九九综合| 亚洲二区在线视频| 亚洲日本乱码卡2卡3卡新区| 77777亚洲午夜久久多喷| 亚洲中文字幕久久精品蜜桃| 久久久久亚洲av无码专区喷水 | 亚洲理论片在线中文字幕| 亚洲人成亚洲精品| 在线观看亚洲人成网站| 久久精品亚洲精品国产色婷| 亚洲高清无在码在线无弹窗| 亚洲男女性高爱潮网站| 亚洲天堂一区二区三区四区| 亚洲小说区图片区| 中文字幕在线观看亚洲日韩| 亚洲AV女人18毛片水真多| 亚洲 另类 无码 在线| 国产精品亚洲美女久久久| 亚洲午夜国产精品无码老牛影视 | 国产精品久久亚洲不卡动漫| 日韩亚洲国产高清免费视频| 久久亚洲欧美国产精品| 亚洲国产精品人人做人人爱| 国产亚洲欧洲Aⅴ综合一区| 亚洲大尺度无码专区尤物| 久久精品国产亚洲AV大全| 亚洲人成伊人成综合网久久| 亚洲日产乱码一二三区别| 亚洲A丁香五香天堂网| 亚洲乳大丰满中文字幕|