欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 中組合模型之對(duì)象結(jié)構(gòu)模式的詳解

 更新時(shí)間:2017年09月09日 11:23:09   作者:blueberry_mu  
這篇文章主要介紹了Java 中組合模型之對(duì)象結(jié)構(gòu)模式的詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家理解應(yīng)用對(duì)象結(jié)構(gòu)模型,需要的朋友可以參考下

Java 中組合模型之對(duì)象結(jié)構(gòu)模式的詳解

一、意圖

將對(duì)象組合成樹形結(jié)構(gòu)以表示”部分-整體”的層次結(jié)構(gòu)。Composite使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。

二、適用性

你想表示對(duì)象的部分-整體層次結(jié)構(gòu)

你希望用戶忽略組合對(duì)象與單個(gè)對(duì)象的不同,用戶將統(tǒng)一使用組合結(jié)構(gòu)中的所有對(duì)象。

三、結(jié)構(gòu)

四、代碼

public abstract class Component {
  protected String name; //節(jié)點(diǎn)名
  public Component(String name){
    this.name = name;
  }

  public abstract void doSomething();
}

public class Composite extends Component {
  /**
   * 存儲(chǔ)節(jié)點(diǎn)的容器
   */
  private List<Component> components = new ArrayList<>();

  public Composite(String name) {
    super(name);
  }

  @Override
  public void doSomething() {
    System.out.println(name);

    if(null!=components){
      for(Component c: components){
        c.doSomething();
      }
    }
  }

  public void addChild(Component child){
    components.add(child);
  }

  public void removeChild(Component child){
    components.remove(child);
  }

  public Component getChildren(int index){
    return components.get(index);
  }
}

public class Leaf extends Component {


  public Leaf(String name) {
    super(name);
  }

  @Override
  public void doSomething() {
    System.out.println(name);
  }
}

public class Client {
  public static void main(String[] args){
    // 構(gòu)造一個(gè)根節(jié)點(diǎn)
    Composite root = new Composite("Root");

    // 構(gòu)造兩個(gè)枝干節(jié)點(diǎn)
    Composite branch1 = new Composite("Branch1");
    Composite branch2 = new Composite("Branch2");

    // 構(gòu)造兩個(gè)葉子節(jié)點(diǎn)
    Leaf leaf1 = new Leaf("Leaf1");
    Leaf leaf2 = new Leaf("Leaf2");

    branch1.addChild(leaf1);
    branch2.addChild(leaf2);

    root.addChild(branch1);
    root.addChild(branch2);

    root.doSomething();
  }
}

輸出結(jié)果:
Root
Branch1
Leaf1
Branch2
Leaf2

如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

您可能感興趣的文章:

相關(guān)文章

  • 這一次搞懂Spring事務(wù)是如何傳播的

    這一次搞懂Spring事務(wù)是如何傳播的

    這篇文章主要介紹了這一次搞懂Spring事務(wù)是如何傳播的,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Java開發(fā)環(huán)境配置JDK超詳細(xì)整理(適合新手入門)

    Java開發(fā)環(huán)境配置JDK超詳細(xì)整理(適合新手入門)

    這篇文章主要給大家介紹了關(guān)于Java開發(fā)環(huán)境配置JDK超詳細(xì)整理的相關(guān)資料,非常適合新手入門,JDK是Java語(yǔ)言的軟件開發(fā)工具包,主要用于移動(dòng)設(shè)備、嵌入式設(shè)備上的java應(yīng)用程序,需要的朋友可以參考下
    2023-11-11
  • Spring?Boot和Vue前后端分離項(xiàng)目架構(gòu)的全過(guò)程

    Spring?Boot和Vue前后端分離項(xiàng)目架構(gòu)的全過(guò)程

    前后端分離是目前互聯(lián)網(wǎng)開發(fā)中比較廣泛使用的開發(fā)模式,主要是將前端和后端的項(xiàng)目業(yè)務(wù)進(jìn)行分離,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot和Vue前后端分離項(xiàng)目架構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • 詳解如何在Java中實(shí)現(xiàn)懶加載

    詳解如何在Java中實(shí)現(xiàn)懶加載

    懶加載是一種常見的優(yōu)化技術(shù),它可以延遲對(duì)象的創(chuàng)建或初始化,直到對(duì)象第一次被使用時(shí)才進(jìn)行。在本文中,我們將介紹如何使用?Java?中的?Supplier?接口和雙重檢查鎖定模式來(lái)實(shí)現(xiàn)懶加載,并保證只初始化一次,希望對(duì)大家有所幫助
    2023-03-03
  • Java?基于Hutool實(shí)現(xiàn)DES加解密示例詳解

    Java?基于Hutool實(shí)現(xiàn)DES加解密示例詳解

    這篇文章主要介紹了Java基于Hutool實(shí)現(xiàn)DES加解密,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • spring data jpa開啟批量插入、批量更新的問(wèn)題解析

    spring data jpa開啟批量插入、批量更新的問(wèn)題解析

    這篇文章主要介紹了spring data jpa開啟批量插入、批量更新問(wèn)題,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-07-07
  • java創(chuàng)建excel示例(jxl使用方法)

    java創(chuàng)建excel示例(jxl使用方法)

    Java Excel是一開放源碼項(xiàng)目,通過(guò)它Java開發(fā)人員可以讀取Excel文件的內(nèi)容、創(chuàng)建新的Excel文件、更新 已經(jīng)存在的Excel文件。下面是使用方法,包括去掉網(wǎng)格線、字體設(shè)置、單元格設(shè)置、對(duì)齊方式等設(shè)置
    2014-03-03
  • JavaEE SpringMyBatis是什么? 它和Hibernate的區(qū)別及如何配置MyBatis

    JavaEE SpringMyBatis是什么? 它和Hibernate的區(qū)別及如何配置MyBatis

    這篇文章主要介紹了JavaEE Spring MyBatis是什么? 它和Hibernate的區(qū)別有哪些?如何配置MyBatis?本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 利用feign調(diào)用返回object類型轉(zhuǎn)換成實(shí)體

    利用feign調(diào)用返回object類型轉(zhuǎn)換成實(shí)體

    這篇文章主要介紹了利用feign調(diào)用返回object類型轉(zhuǎn)換成實(shí)體,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 很簡(jiǎn)單的Java斷點(diǎn)續(xù)傳實(shí)現(xiàn)原理

    很簡(jiǎn)單的Java斷點(diǎn)續(xù)傳實(shí)現(xiàn)原理

    這篇文章主要以實(shí)例的方式為大家詳細(xì)介紹了簡(jiǎn)單的Java斷點(diǎn)續(xù)傳實(shí)現(xiàn)原理,感興趣的小伙伴們可以參考一下
    2016-07-07

最新評(píng)論