日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java常用设计模式————组合模式

發布時間:2025/3/12 java 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java常用设计模式————组合模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

引言

組合模式,是一種類似遞歸算法的結構性設計模式,通過以簡單的 List ,組合本類對象,實現樹狀對象結構的“部分、整體”的層次。

它可以讓調用程序不需要關心復雜對象與簡單對象的區別,而統一地實現處理邏輯。

對于個體與整體存在一定共性的數據場景的展示非常有幫助,比如省市區的樹狀結構,領導與員工、校院系等。

一、組合模式的類圖結構

用套娃形容組合模式非常貼切,其編碼核心其實就是用數組來組合下級對象,而下級對象本身也屬于此類實例。一般就是用于描述某種極具共性的實體類,如省、市、區;領導、員工等。

二、組合模式的代碼實現

package com.mht.demo.組合模式;import java.util.ArrayList; import java.util.List;public class Employee {private String name;private String dept;private int salary;/** 通過數組組合自身對象*/private List<Employee> subordinates;public Employee(String name, String dept, int salary) {this.name = name;this.dept = dept;this.salary = salary;this.subordinates = new ArrayList<>();}public void add(Employee emp) {this.subordinates.add(emp);}public void remove(Employee emp) {this.subordinates.remove(emp);}public List<Employee> getSubordinates() {return subordinates;}@Overridepublic String toString() {return "{\"name\":\"" + name + "\", \"dept\":\"" + dept + "\", \"salary\":\"" + salary + "\", \"subordinates\":"+ subordinates + "}";} }

測試代碼:

public class Client {public static void main(String[] args) {// 最上層員工,同時也是最高領導Employee ceo = new Employee("馬云", "CEO", 30000);// 中層員工,同時也是中層領導Employee headSales = new Employee("Robert", "銷售部", 20000);Employee headMarketing = new Employee("Michel", "市場部", 20000);// 基層員工,奮斗在業務一線Employee salesEmp = new Employee("Richard", "銷售部", 10000);Employee salesEmp2 = new Employee("Rob", "銷售部", 10000);Employee marketEmp = new Employee("Laura", "市場部", 10000);Employee marketEmp2 = new Employee("Bob", "市場部", 10000);ceo.add(headSales);ceo.add(headMarketing);headSales.add(salesEmp);headSales.add(salesEmp2);headMarketing.add(marketEmp);headMarketing.add(marketEmp2);// 打印CEO的管理層級System.out.println("CEO的管理層級:" + ceo);for (Employee headEmp : ceo.getSubordinates()) {System.out.println(headEmp);for (Employee subEmp : headEmp.getSubordinates()) {System.out.println(subEmp);}}} }

測試結果:

CEO的管理層級:{"name":"馬云", "dept":"CEO", "salary":"30000", "subordinates":[{"name":"Robert", "dept":"銷售部", "salary":"20000", "subordinates":[{"name":"Richard", "dept":"銷售部", "salary":"10000", "subordinates":[]}, {"name":"Rob", "dept":"銷售部", "salary":"10000", "subordinates":[]}]}, {"name":"Michel", "dept":"市場部", "salary":"20000", "subordinates":[{"name":"Laura", "dept":"市場部", "salary":"10000", "subordinates":[]}, {"name":"Bob", "dept":"市場部", "salary":"10000", "subordinates":[]}]}]} {"name":"Robert", "dept":"銷售部", "salary":"20000", "subordinates":[{"name":"Richard", "dept":"銷售部", "salary":"10000", "subordinates":[]}, {"name":"Rob", "dept":"銷售部", "salary":"10000", "subordinates":[]}]} {"name":"Richard", "dept":"銷售部", "salary":"10000", "subordinates":[]} {"name":"Rob", "dept":"銷售部", "salary":"10000", "subordinates":[]} {"name":"Michel", "dept":"市場部", "salary":"20000", "subordinates":[{"name":"Laura", "dept":"市場部", "salary":"10000", "subordinates":[]}, {"name":"Bob", "dept":"市場部", "salary":"10000", "subordinates":[]}]} {"name":"Laura", "dept":"市場部", "salary":"10000", "subordinates":[]} {"name":"Bob", "dept":"市場部", "salary":"10000", "subordinates":[]}

格式化后的結果:

{"name":"馬云","dept":"CEO","salary":"30000","subordinates":[{"name":"Robert","dept":"銷售部","salary":"20000","subordinates":[{"name":"Richard","dept":"銷售部","salary":"10000","subordinates":[]},{"name":"Rob","dept":"銷售部","salary":"10000","subordinates":[]}]},{"name":"Michel","dept":"市場部","salary":"20000","subordinates":[{"name":"Laura","dept":"市場部","salary":"10000","subordinates":[]},{"name":"Bob","dept":"市場部","salary":"10000","subordinates":[]}]}] }

總結

組合模式的使用場景非常特定,一般就是在輸出打印樹狀結構型數據時才會用到。

它模糊了簡單元素和復雜元素的概念,客戶端程序可以像處理簡單元素一樣來處理復雜元素,從而使客戶端與復雜元素的內部結構解耦。

定義時,通過List組織自身對象。同時也并未用到抽象類或接口。

注意為數組提供必要的添加和移除方法。

?

總結

以上是生活随笔為你收集整理的Java常用设计模式————组合模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人网综合 | 欧美激情一级精品国产 | 国产免费一区二区三区免费视频 | 久久久国产精品无码 | 销魂奶水汁系列小说 | 蜜桃视频免费网站 | 超碰加勒比 | 超碰97干 | 久久国产日韩 | 伊人色综合久久天天 | 日韩毛毛片 | 超碰人人插 | 人人妻人人澡人人爽精品日本 | 欧美毛茸茸 | 国产91视频在线 | 超碰97人人在线 | 久久99久久99精品中文字幕 | 国产在线成人 | av影音先锋 | 最新日韩中文字幕 | 精品无码一区二区三区在线 | 高清无码一区二区在线观看吞精 | 午夜视频免费在线观看 | 无码人妻精品一区二区三区9厂 | 五月天狠狠干 | 欧美精品一区二区三区久久 | 可以免费看的毛片 | 涩涩涩涩涩涩涩涩涩涩 | 九九九热视频 | 国产无套内射又大又猛又粗又爽 | 性色视频网站 | 日本不卡一区二区三区在线观看 | 欧美精品一区二区久久婷婷 | 欧美福利视频导航 | 国产三级在线播放 | 超碰国产97 | 手机av免费观看 | 四虎成人精品在永久免费 | 天天干,天天操 | 亚洲区偷拍 | 日日躁夜夜躁白天躁晚上躁91 | 国产精品亚洲lv粉色 | 日本理论视频 | 黄色小视频链接 | 我要看一级黄色片 | 黄色一级免费网站 | 国产一区不卡在线观看 | 国产综合精品一区二区三区 | 茄子视频懂你更多在线观看 | 国产一级免费在线观看 | 国产成人a∨ | 粉色视频免费观看 | 欧美精品性生活 | 夜色视频在线观看 | 国产成人免费av | www.九九九| 四虎影视库 | 99久久久无码国产 | 欧美三级久久久 | 精品一区二区三区电影 | 日韩av一区二区在线观看 | 欧美揉bbbbb揉bbbbb | 欧美日韩国产成人在线 | 免费观看亚洲视频 | 成人免费在线观看av | aa一级视频| 色天天| 国产精品一区网站 | 欧美人体做爰大胆视频 | 日本少妇videos高潮 | 欧美aaaaaa| 欧美日韩视频免费观看 | 成年人黄色免费视频 | av在线大全 | 夜夜小视频 | 婷婷一区二区三区 | 免费看的黄色网 | 中文在线√天堂 | 亚洲va欧美va天堂v国产综合 | 色偷偷综合网 | 老司机一区 | 国产免费资源 | 欧洲美熟女乱又伦 | 免费看污黄网站在线观看 | 亚洲看| 天天做天天爱天天爽综合网 | 黄色三级a | 婷婷色激情| www.亚洲一区二区三区 | 国产一级二级在线观看 | 男人在线网站 | 国产乱码77777777 | 精品一区二区久久久久久久网站 | 美女一二区 | 久久久国产精品x99av | 精品人伦一区二区三 | 午夜丁香网 | 美女131爽爽爽 | 黄色片网站国产 |