国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務器之家 - 編程語言 - JAVA教程 - 快速理解Java設計模式中的組合模式

快速理解Java設計模式中的組合模式

2021-02-02 11:34冷血之心 JAVA教程

這篇文章主要介紹了快速理解Java設計模式中的組合模式,具有一定參考價值,需要的朋友可以了解下。

組合模式是一種常見的設計模式(但我感覺有點復雜)也叫合成模式,有時又叫做部分-整體模式,主要是用來描述部分與整體的關系。

個人理解:組合模式就是將部分組裝成整體。

定義如下:

將對象組合成樹形結構以表示“部分-整體”的層次結構,使得用戶對單個對象和組合對象的使用具有一致性。

通用類圖如下:

快速理解Java設計模式中的組合模式

組合模式的包含角色:

● Component 抽象構件角色
定義參加組合對象的共有方法和屬性,可以定義一些默認的行為或屬性。

● Leaf 葉子構件
葉子對象,其下再也沒有其他的分支,也就是遍歷的最小單位。

● Composite 樹枝構件
樹枝對象,它的作用是組合樹枝節點和葉子節點形成一個樹形結構。

通用源代碼:

?
1
2
3
4
5
6
7
抽象構件
public abstract class Component {
   //個體和整體都具有的共享
   public void do Something(){
       //編寫業務邏輯
   }
}

樹枝構建

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Composite extends Component {
   //構件容器
   private Array List<component> component Array List = new Array List<component>()
   //增加一個葉子構件或樹枝構件
   public void add(Component component){
       this.component Array List.add(component);
   }
   //刪除一個葉子構件或樹枝構件
   public void remove(Component component){
       this.component Array List.remove(component);
   
 //獲得分支下的所有葉子構件和樹枝構件
   public Array List<component> get Children(){
       return this.component Array List;
   }
}

樹葉節點是沒有子下級對象的對象,定義參加組合的原始對象行為。

?
1
2
3
4
5
6
7
8
9
10
樹葉構件
public class Leaf extends Component {
   /*
   *
可以覆寫父類方法
   * public void do Something(){
   *
   * }
   */
}

測試類負責樹狀結構的建立,并可以通過遞歸方式遍歷整個樹。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Client {
   public static void main(String[] args) {
      //創建一個根節點
       Composite root = new Composite();
       root.do Something();
       //創建一個樹枝構件
       Composite branch = new Composite();
       //創建一個葉子節點
       Leaf leaf = new Leaf();
       //建立整體
       root.add(branch);
       branch.add(leaf);    
   }
   //通過遞歸遍歷樹
   public static void display(Composite root){
       for(Component c:root.get Children()){
         if(c instanceof Leaf){ //葉子節點
             c.do Something();
         }else{ //樹枝節點
             display((Composite)c);
         }
       }
   }
}

組合模式的優點:

● 高層模塊調用簡單
一棵樹形機構中的所有節點都是Component,局部和整體對調用者來說沒有任何區別,也就是說,高層模塊不必關心自己處理的是單個對象還是整個組合結構,簡化了高層模塊的代碼。
● 節點自由增加
使用了組合模式后,我們可以看看,如果想增加一個樹枝節點、樹葉節點是不是都很容易,只要找到它的父節點就成,非常容易擴展,符合開閉原則,對以后的維護非常有利。

組合模式的缺點:

組合模式有一個非常明顯的缺點,看到我們在場景類中的定義,提到樹葉和樹枝使用時的定義了嗎?直接使用了實現類!這在面向接口編程上是很不恰當的,與依賴倒置原則沖突,讀者在使用的時候要考慮清楚,它限制了你接口的影響范圍。

使用場景:
● 維護和展示部分-整體關系的場景,如樹形菜單、文件和文件夾管理。
● 從一個整體中能夠獨立出部分模塊或功能的場景。

注意事項:

只要是樹形結構,就要考慮使用組合模式,這個一定要記住,只要是要體現局部和整體的關系的時候,而且這種關系還可能比較深,考慮一下組合模式吧。

總結

以上就是本文關于快速理解Java設計模式中的組合模式的全部內容,希望對大家有所幫助。有什么問題可以隨時留言,小編會及時回復大家的。感謝朋友們對本站的支持!

原文鏈接:https://www.2cto.com/kf/201609/546832.html

延伸 · 閱讀

精彩推薦
  • JAVA教程Java處理日期時間的方法匯總

    Java處理日期時間的方法匯總

    這篇文章主要給大家介紹了利用Java中的Calendar 類處理日期時間的方法匯總,其中包括取日期的每部分、取當月的第一天或最后一天、求兩個日期之間相隔的...

    ggjucheng3912020-07-16
  • JAVA教程Java基于socket實現簡易聊天室實例

    Java基于socket實現簡易聊天室實例

    這篇文章主要介紹了Java基于socket實現簡易聊天室的方法,實例分析了java基于socket實現聊天室服務端與客戶端的相關技巧,需要的朋友可以參考下 ...

    wo_soul3692019-12-19
  • JAVA教程java開發flyway的方法

    java開發flyway的方法

    這篇文章主要介紹了java開發flyway的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    幕友皎敖奔乾2542020-07-25
  • JAVA教程java的引用類型的詳細介紹

    java的引用類型的詳細介紹

    在java中提供了4個級別的引用:強引用、軟引用、弱引用、虛引用。其中強引用FinalReference是default個飾符來修飾,其它3個級別均為public修飾 ...

    java之家4272019-10-15
  • JAVA教程Java中字符編碼格式詳解

    Java中字符編碼格式詳解

    在java應用軟件中,會有多處涉及到字符集編碼,有些地方需要進行正確的設置,有些地方需要進行一定程度的處理。本文主要給大家講解java中字符的編碼...

    leesf3132020-04-12
  • JAVA教程詳解spring整合shiro權限管理與數據庫設計

    詳解spring整合shiro權限管理與數據庫設計

    這篇文章主要介紹了詳解spring整合shiro權限管理與數據庫設計,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    小爺胡漢三4462020-10-27
  • JAVA教程Java實現批量導入excel表格數據到數據庫中的方法

    Java實現批量導入excel表格數據到數據庫中的方法

    這篇文章主要介紹了Java實現批量導入excel表格數據到數據庫中的方法,結合實例形式詳細分析了java導入Excel數據到數據庫的具體步驟與相關操作技巧,需要的...

    CharlinGod3782021-01-27
  • JAVA教程springboot掃描自定義的servlet和filter代碼詳解

    springboot掃描自定義的servlet和filter代碼詳解

    本文是一篇根據作者工作經歷總結出來的關于springboot掃描自定義的servlet和filter代碼詳解的文章,小編覺得非常不錯,這里給大家分享下,和朋友們一起學...

    葉長風7802021-01-16
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 亚洲视频一区二区三区 | 亚洲人体视频 | 色接久久| jizz中国zz女人18高潮 | 国产精品自拍在线观看 | 成人福利电影在线观看 | 国产精品第一国产精品 | 亚洲av毛片一区二二区三三区 | 亚洲精品一区二区三区蜜桃久 | 免费看国产片在线观看 | 桃色一区 | 精品国内 | 久久久亚洲成人 | 免费在线黄色网址 | av网址在线播放 | 久久精品超碰 | 成人三级视频网站 | 国产一区影院 | 日韩成人在线观看 | 久久久久久久av | 午夜精品网站 | 福利片在线 | 免费一级a毛片免费观看 | 亚洲成av人片在线观看无码 | av大片| 毛片免费观看视频 | 久久久久久亚洲 | 久久一 | 欧美大片免费高清观看 | 日本不卡在线观看 | 国产精品欧美大片 | 日本黄色免费大片 | 久久久久久国产一级毛片高清版 | 成人免费视频网 | 欧美激情视频一区二区三区不卡 | 日韩亚洲一区二区 | 久久综合av | 北条麻妃一区二区三区中文字幕 | 欧美激情一区二区三区 | 美国特级a毛片免费网站 | 亚洲国产精品99久久久久久久久 |