組合模式主要是為了表達(dá)“部分-整體”的層次結(jié)構(gòu),例如公司的組織架構(gòu),每個(gè)部門下又有若干個(gè)下級(jí)部門,再如菜單結(jié)構(gòu),每個(gè)菜單下可能有一個(gè)或多個(gè)子菜單。
下例以員工的層級(jí)結(jié)構(gòu)說明組合模式的用法。每個(gè)員工都有姓名、部門、工資等屬性,每個(gè)員工可能有0個(gè)或多個(gè)下屬員工。
Employee類的代碼如下:
package composite;
import java.util.ArrayList;
import java.util.List;
public class Employee {
private String name;
private String department;
private int salary;
private List < Employee > subordinates;
//構(gòu)造函數(shù)
public Employee(String name, String department, int salary) {
this.name=name;
this.department=department;
this.salary=salary;
this.subordinates=new ArrayList < Employee > ();
}
//添加下屬
public void add(Employee employee) {
subordinates.add(employee);
}
//移除下屬
public void remove(Employee employee) {
subordinates.remove(employee);
}
//獲取下屬
public List < Employee > getSubordinates(){
return subordinates;
}
//轉(zhuǎn)成字符串
public String toString() {
return "員工(姓名:"+name+",部門:"+department+",工資:"+salary+")";
}
}
主函數(shù)調(diào)用方式:
package main;
import composite.*;
public class CompositePattern {
public static void main(String[] args) {
//創(chuàng)建一個(gè)員工:總裁
Employee president = new Employee("李剛","管理層",30000);
//創(chuàng)建兩個(gè)員工:部門領(lǐng)導(dǎo)
Employee directorSales = new Employee("王孟","銷售部",20000);
Employee directorRND = new Employee("嚴(yán)明","研發(fā)部",20000);
//創(chuàng)建兩個(gè)員工:銷售部銷售員
Employee saler1 = new Employee("孟德貴","銷售部",10000);
Employee saler2 = new Employee("肖亮高","銷售部",10000);
//創(chuàng)建兩個(gè)員工:研發(fā)部工程師
Employee engineer1 = new Employee("左弓成","研發(fā)部",10000);
Employee engineer2 = new Employee("成顏發(fā)","研發(fā)部",10000);
//總裁添加下屬
president.add(directorSales);
president.add(directorRND);
//銷售部部門領(lǐng)導(dǎo)添加下屬
directorSales.add(saler1);
directorSales.add(saler2);
//研發(fā)部部門領(lǐng)導(dǎo)添加下屬
directorRND.add(engineer1);
directorRND.add(engineer2);
//打印輸出所有員工
System.out.println(president);
for(Employee directorEmployee: president.getSubordinates()) {
System.out.println(directorEmployee);
for(Employee employee: directorEmployee.getSubordinates()) {
System.out.println(employee);
}
}
}
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
JAVA
+關(guān)注
關(guān)注
19文章
2973瀏覽量
104920 -
JAVA語言
+關(guān)注
關(guān)注
0文章
138瀏覽量
20132
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ADS5404/ADS5402怎么使用test pattern模式才能正確回讀到數(shù)據(jù)呢?
使用ADS5402/ADS5404采集數(shù)據(jù),想通過test pattern模式測(cè)試下回傳數(shù)據(jù),根據(jù)手冊(cè)中提示先將HP置0,然后寫0x3c,0x3d,0x3e三個(gè)寄存器,但是按照提示操作后回傳數(shù)據(jù)為
發(fā)表于 12-11 07:01
ADS52J90配置成了test pattern模式,ADC傳輸回來的pattern值出現(xiàn)錯(cuò)位現(xiàn)象,為什么?
調(diào)試ADS52J90這款芯片時(shí),先將芯片配置成了test pattern模式,但是ADC傳輸回來的pattern值出現(xiàn)錯(cuò)位現(xiàn)象,抓取frame clk時(shí)發(fā)現(xiàn)在設(shè)定某些特定的pattern
發(fā)表于 01-03 07:21
【LabVIEW技巧】LabVIEW OOP怎么學(xué)
Pattern)橋接模式(Bridge Pattern)過濾器模式(Filter、Criteria Pattern)
發(fā)表于 08-08 08:35
嵌入式C語言軟件設(shè)計(jì)之裝飾器模式(Decorator Pattern)
裝飾器模式(Decorator Pattern),是結(jié)構(gòu)型設(shè)計(jì)模式的一種,裝飾器模式允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,而又不改變其對(duì)象結(jié)構(gòu),這種方式比使用子類繼承的方式更加靈活。
發(fā)表于 03-01 10:55
?432次閱讀
設(shè)計(jì)模式行為型:狀態(tài)模式
在狀態(tài)模式(State Pattern)中,類的行為是基于它的狀態(tài)改變的。這種類型的設(shè)計(jì)模式屬于行為型模式。
設(shè)計(jì)模式結(jié)構(gòu)性:組合模式
組合模式(Composite Pattern),又叫部分整體模式,是用于把一組相似的對(duì)象當(dāng)作一個(gè)單一的對(duì)象。
演示裝飾器模式的用法
裝飾器模式(Decorator Pattern)允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個(gè)包裝。
組合模式應(yīng)該怎么用
uniformly. 組合模式(Composite Pattern):將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分-整體”的層次結(jié)構(gòu), 使得用戶對(duì)單個(gè)
評(píng)論