国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java組合設(shè)計模式

這篇具有很好參考價值的文章主要介紹了Java組合設(shè)計模式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Java組合設(shè)計模式

定義

組合模式(Composite Pattern),又叫部分整體模式,它創(chuàng)建了對象組的樹形結(jié)構(gòu),將對象組合成樹狀結(jié)構(gòu)以表示“整體-部分”的層次關(guān)系。組合模式依據(jù)樹狀結(jié)構(gòu)來組合對象,用來表示部分以及整體層次。這種設(shè)計模式屬于結(jié)構(gòu)性模式。組合模式使得用戶對單個對象和組合對象的訪問具有一致性,即:組合能讓客戶以一致的方式處理個別對象以及組合對象。

對應(yīng)角色

  • 抽象構(gòu)件(Component)角色:它的主要作用是為樹葉構(gòu)件和樹枝構(gòu)件聲明公共接口,并實現(xiàn)它們的默認(rèn)行為。在透明式的組合模式中抽象構(gòu)件還聲明訪問和管理子類的接口;在安全式的組合模式中不聲明訪問和管理子類的接口,管理工作由樹枝構(gòu)件完成。
  • 樹葉構(gòu)件(Leaf)角色:是組合中的葉節(jié)點對象,它沒有子節(jié)點,用于繼承或?qū)崿F(xiàn)抽象構(gòu)件。
  • 樹枝構(gòu)件(Composite)角色 / 中間構(gòu)件:是組合中的分支節(jié)點對象,它有子節(jié)點,用于繼承和實現(xiàn)抽象構(gòu)件。它的主要作用是存儲和管理子部件,通常包含 Add ()、Remove ()、GetChild () 等方法

優(yōu)缺點

優(yōu)點

  • 定義層次:清楚地定義分層次的復(fù)雜對象,表示對象的全部或部分層次。
  • 忽略層次:讓客戶端忽略層次之間的差異,方便對整個層次結(jié)構(gòu)進(jìn)行控制。
  • 簡化客戶端代碼。
  • 符合開閉原則。

缺點

  • 限制類型復(fù)雜:限制類型時,比較復(fù)雜。如:某個目錄中只能包含文本文件,使用組合模式時,不能依賴類型系統(tǒng),施加約束,它們都來自于節(jié)點的抽象層。在這種情況下,必須通過在運行時進(jìn)行類型檢查,這樣就變得比較復(fù)雜。
  • 使設(shè)計變得更加抽象1。

應(yīng)用場景

組合模式適用于處理樹形結(jié)構(gòu)的場景,例如文件系統(tǒng),根目錄下有若干文件和目錄,在二級目錄下還有目錄和文件。這種情況下,適合使用組合模式。組合模式使客戶端對單個對象和組合對象保持一致的方式處理12。

組合模式在用戶界面中也有廣泛的應(yīng)用,例如在窗口、菜單、按鈕等UI組件中都可以使用組合模式來設(shè)計。在這些場景中,組合模式可以很好地管理組件的層級關(guān)系,并且可以方便地對整個界面進(jìn)行布局和維護(hù)文章來源地址http://www.zghlxwxcb.cn/news/detail-558212.html

實例

import java.util.ArrayList;
import java.util.List;
 
public class Employee {
   private String name;
   private String dept;
   private int salary;
   private List<Employee> subordinates;
 
   //構(gòu)造函數(shù)
   public Employee(String name,String dept, int sal) {
      this.name = name;
      this.dept = dept;
      this.salary = sal;
      subordinates = new ArrayList<Employee>();
   }
 
   public void add(Employee e) {
      subordinates.add(e);
   }
 
   public void remove(Employee e) {
      subordinates.remove(e);
   }
 
   public List<Employee> getSubordinates(){
     return subordinates;
   }
 
   public String toString(){
      return ("Employee :[ Name : "+ name 
      +", dept : "+ dept + ", salary :"
      + salary+" ]");
   }   
}
public class CompositePatternDemo {
   public static void main(String[] args) {
      Employee CEO = new Employee("John","CEO", 30000);
 
      Employee headSales = new Employee("Robert","Head Sales", 20000);
 
      Employee headMarketing = new Employee("Michel","Head Marketing", 20000);
 
      Employee clerk1 = new Employee("Laura","Marketing", 10000);
      Employee clerk2 = new Employee("Bob","Marketing", 10000);
 
      Employee salesExecutive1 = new Employee("Richard","Sales", 10000);
      Employee salesExecutive2 = new Employee("Rob","Sales", 10000);
 
      CEO.add(headSales);
      CEO.add(headMarketing);
 
      headSales.add(salesExecutive1);
      headSales.add(salesExecutive2);
 
      headMarketing.add(clerk1);
      headMarketing.add(clerk2);
 
      //打印該組織的所有員工
      System.out.println(CEO); 
      for (Employee headEmployee : CEO.getSubordinates()) {
         System.out.println(headEmployee);
         for (Employee employee : headEmployee.getSubordinates()) {
            System.out.println(employee);
         }
      }        
   }
}

到了這里,關(guān)于Java組合設(shè)計模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java設(shè)計模式之結(jié)構(gòu)型-組合模式(UML類圖+案例分析)

    Java設(shè)計模式之結(jié)構(gòu)型-組合模式(UML類圖+案例分析)

    目錄 一、基礎(chǔ)概念 二、UML類圖 三、角色設(shè)計 四、案例分析 4.1、基本實現(xiàn) 4.2、菜單遍歷? 五、總結(jié)? 組合模式(Composite Pattern)又叫部分-整體模式,它通過將對象組合成樹形結(jié)構(gòu)來表示“整體-部分”的層次關(guān)系,允許用戶統(tǒng)一單個對象和組合對象的處理邏輯。 角色 描述

    2024年02月16日
    瀏覽(25)
  • 【設(shè)計模式——學(xué)習(xí)筆記】23種設(shè)計模式——組合模式Composite(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    【設(shè)計模式——學(xué)習(xí)筆記】23種設(shè)計模式——組合模式Composite(原理講解+應(yīng)用場景介紹+案例介紹+Java代碼實現(xiàn))

    編寫程序展示一個學(xué)校院系結(jié)構(gòu): 需求是這樣,要在一個頁面中展示出學(xué)校的院系組成,一個學(xué)校有多個學(xué)院,一個學(xué)院有多個系 【傳統(tǒng)方式】 將學(xué)院看做是學(xué)校的子類,系是學(xué)院的子類,小的組織繼承大的組織 分析: 在一個頁面中展示出學(xué)校的院系組成,一個學(xué)校有多個

    2024年02月15日
    瀏覽(32)
  • 【Java面試題】設(shè)計模式之七種結(jié)構(gòu)性模式——代理模式、適配器模式、橋接模式、裝飾模式、外觀模式、享元模式、組合模式

    目錄 一、代理模式 二、適配器模式 三、橋接模式 四、裝飾模式 五、外觀模式 六、享元模式 七、組合模式 概念: 代理模式是為其他對象提供一種以代理控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以在客戶端和目標(biāo)對

    2023年04月09日
    瀏覽(25)
  • 結(jié)構(gòu)型設(shè)計模式之組合模式【設(shè)計模式系列】

    結(jié)構(gòu)型設(shè)計模式之組合模式【設(shè)計模式系列】

    C++技能系列 Linux通信架構(gòu)系列 C++高性能優(yōu)化編程系列 深入理解軟件架構(gòu)設(shè)計系列 高級C++并發(fā)線程編程 設(shè)計模式系列 期待你的關(guān)注哦?。?! 現(xiàn)在的一切都是為將來的夢想編織翅膀,讓夢想在現(xiàn)實中展翅高飛。 Now everything is for the future of dream weaving wings, let the dream fly in reali

    2024年02月15日
    瀏覽(24)
  • 軟件設(shè)計模式系列之十——組合模式

    軟件設(shè)計模式系列之十——組合模式

    組合模式是一種結(jié)構(gòu)型設(shè)計模式,用于將對象組合成樹形結(jié)構(gòu)以表示部分-整體層次結(jié)構(gòu)。這個模式允許客戶端以一致的方式處理單個對象和對象組合,因此它將單個對象和組合對象視為可互換的。 組合模式允許你將對象組合成樹狀結(jié)構(gòu)來表示\\\"部分-整體\\\"的層次結(jié)構(gòu)。組合模

    2024年02月08日
    瀏覽(24)
  • Java 設(shè)計模式系列:享元模式

    Java 設(shè)計模式系列:享元模式

    享元模式(Flyweight Pattern)是一種軟件設(shè)計模式,用于減少內(nèi)存使用和提高性能。它通過共享細(xì)粒度對象來減少創(chuàng)建和銷毀對象時所需的內(nèi)存。享元模式適用于大量相似對象的場景,這些對象可以共享相同的狀態(tài)和行為。 享元模式的核心思想是將對象分為內(nèi)部狀態(tài)和外部狀態(tài)

    2024年04月15日
    瀏覽(39)
  • Java設(shè)計模式系列--觀察者模式寫法2:JDK

    Java設(shè)計模式系列--觀察者模式寫法2:JDK

    原文網(wǎng)址:Java設(shè)計模式系列--觀察者模式寫法2:JDK_IT利刃出鞘的博客-CSDN博客 說明 本文用示例介紹觀察者模式的一種寫法:JDK。 JDK的觀察者模式簡介 在 Java 中,java.util.Observable 類和 java.util.Observer 接口定義了觀察者模式,只要實現(xiàn)這兩個接口就可以編寫觀察者模式。 1. Ob

    2024年02月13日
    瀏覽(23)
  • 完全從零Java自學(xué)系列【入門篇】(第四課:Mysql服務(wù)端安裝&使用客戶端操作數(shù)據(jù)庫&初識SQL基礎(chǔ)操作&Java中使用第三方包&Java數(shù)據(jù)庫操作&初步理解面相對象真正的意義之橋接設(shè)計模式)

    完全從零Java自學(xué)系列【入門篇】(第四課:Mysql服務(wù)端安裝&使用客戶端操作數(shù)據(jù)庫&初識SQL基礎(chǔ)操作&Java中使用第三方包&Java數(shù)據(jù)庫操作&初步理解面相對象真正的意義之橋接設(shè)計模式)

    ??數(shù)據(jù)庫是專門用來存儲一系列集合數(shù)據(jù)的地方。所有的文件都可以被稱之為庫,當(dāng)應(yīng)用場景沒那么復(fù)雜的時候,簡單的應(yīng)用程序用文本就可以了。數(shù)據(jù)庫的意義是為了設(shè)計更好的保障數(shù)據(jù)安全(如多線程操作)、數(shù)據(jù)一致、索引(如何在龐大的數(shù)據(jù)中快速查找)等等一系

    2024年02月21日
    瀏覽(29)
  • 設(shè)計模式——組合模式08

    設(shè)計模式——組合模式08

    組合模式:把類似對象或方法組合成結(jié)構(gòu)為樹狀的設(shè)計思路。 例如部門之間的關(guān)系。 設(shè)計模式,一定要敲代碼理解 滿足開閉原則。葉子結(jié)點與非葉子結(jié)點都繼承或?qū)崿F(xiàn)同一抽象,只是葉子功能權(quán)限少,而非葉子結(jié)點需要容器記錄子節(jié)點。 代碼下載

    2024年04月11日
    瀏覽(27)
  • 設(shè)計模式——組合模式

    設(shè)計模式——組合模式

    組合模式(Composite Pattern):組合多個對象形成樹形結(jié)構(gòu)以表示具有“整體—部分”關(guān)系的層次結(jié)構(gòu)。組合模式對單個對象(即葉子對象)和組合對象(即容器對象)的使用具有一致性,組合模式又可以稱為“整體—部分”(Part-Whole)模式,它是一種對象結(jié)構(gòu)型模式。 組合模式將

    2024年02月11日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包