激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 輕松掌握java組合模式

輕松掌握java組合模式

2020-06-19 11:27斷了聯系 JAVA教程

這篇文章主要幫助大家輕松掌握java組合模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下

組合模式,將對象組合成樹形結構以表示“部分-整體”的層次結構,組合模式使得用戶對單個對象和組合對象的使用具有一致性,組合模式可以讓客戶端像修改配置文件一樣簡單的完成本來需要流程控制語句來完成的功能。

特點:對于遞歸或者類似樹形的分級數據結構,可以用最簡單的方式進行處理。

企業級開發和常用框架中的應用:系統目錄結構和網站導航結構

下面以目錄結構舉例:

場景:假設我們現在有一個目錄,目錄下面還有子目錄和文件,現在我們要查看整個目錄及目錄下的所有文件和創建時間

具體代碼如下:

java" id="highlighter_493100">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package com.test.composite;
 
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
public class Demo {
 public static void main(String[] args) {
 
 Date d = new Date();
 Dir f1 = new Dir("我的收藏", d);
 d.setYear(2012);
 Dir f2 = new Dir("圖片", d);
 Dir f3 = new Dir("音樂", d);
 
 d.setYear(2013);
 ActualFile f4 = new ActualFile("喜洋洋與灰太狼.avi", d);
 f1.add(f4);
 ActualFile f5 = new ActualFile("taiyanghua.jpg", d);
 ActualFile f6 = new ActualFile("變形精鋼.jpg", d);
 f2.add(f5);
 f2.add(f6);
 f1.add(f2);
 f1.add(f3);
 
 f1.showFile();
 
 }
}
 
/**
 * 首先目錄和文件都屬于文件,所以我們可以抽象一個抽象文件出來
 */
interface AbstractFile {
 /**
 * 展示文件方法
 */
 public void showFile();
}
 
/**
 * 真實文件
 */
class ActualFile implements AbstractFile {
 
 private String name;
 private Date createDate;
 
 public ActualFile(String name, Date createDate) {
 this.name = name;
 this.createDate = createDate;
 }
 
 public String getName() {
 return name;
 }
 
 public void setName(String name) {
 this.name = name;
 }
 
 public Date getCreateDate() {
 return createDate;
 }
 
 public void setCreateDate(Date createDate) {
 this.createDate = createDate;
 }
 
 /**
 * 實現抽象文件類的展示文件方法
 */
 public void showFile() {
 System.out.println("文件名:"+this.name+"--創建時間:"+this.createDate.getTime());
 }
 
}
 
/**
 * 目錄文件
 */
class Dir implements AbstractFile {
 
 private String name;
 private Date createDate;
 
 /**
 * 作為目錄文件,會多出一個子文件列表
 */
 private List<AbstractFile> list = new ArrayList<>();
 
 public Dir(String name, Date createDate) {
 super();
 this.name = name;
 this.createDate = createDate;
 }
 
 public String getName() {
 return name;
 }
 
 public void setName(String name) {
 this.name = name;
 }
 
 public Date getCreateDate() {
 return createDate;
 }
 
 public void setCreateDate(Date createDate) {
 this.createDate = createDate;
 }
 
 /**
 * 目錄文件的添加操作,為目錄添加子文件或者子目錄
 */
 public void add(AbstractFile f){
 this.list.add(f);
 }
 
 /**
 * 目錄文件的刪除操作,刪除子文件或者子目錄
 */
 public void remove(AbstractFile f){
 this.list.remove(f);
 }
 
 /**
 * 目錄文件的獲取操作,獲取目錄下面的子文件或者子目錄
 */
 public AbstractFile getIndex(int index){
 return this.list.get(index);
 }
 
 public void showFile() {
 System.out.println("目錄名:"+this.name+"--創建時間:"+this.createDate.getTime());
 for(AbstractFile f:list){
  f.showFile();
 }
 }
 
}

組合模式更像是一種遍歷手段,但是這種手段也有一些限制,比如只能針對類似于樹形結構的數據。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: xnxx 美女19| japanese xxxxhd | 久久丝袜脚交足黄网站免费 | 亚洲av一级毛片特黄大片 | 国产成人在线免费看 | 一区二区三区手机在线观看 | 久久国产综合视频 | wwwxxx免费视频 | 一区二区免费 | 国产美女爽到喷白浆的 | 污片在线观看视频 | 一级国产免费 | 啪啪激情 | 成年免费在线视频 | 中国黄色一级生活片 | 精品一区二区三区毛片 | 色诱亚洲精品久久久久久 | 欧美毛片在线观看 | 精品国产一区二区三区四区在线 | 一级做a爰性色毛片免费1 | 亚洲第一成人在线 | 成人免费av在线 | 欧美日韩国产中文字幕 | 美国av片在线观看 | 中文字幕观看 | 国产91免费看 | 国产乱淫a∨片免费观看 | 99在线热视频 | 免费观看视频在线观看 | 国产精品免费观看视频 | 久久久精品视频网站 | 久久影院免费观看 | 91网在线播放 | 国产精品久久久久久久不卡 | 一级电影免费在线观看 | 天堂在线资源av | 久久久www成人免费毛片 | 欧美大片一级毛片 | hd porn 4k video xhicial| 4p一女两男做爰在线观看 | 国产精品久久国产精麻豆96堂 |