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

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

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java設計模式之組合模式(Composite)

java設計模式之組合模式(Composite)

2020-07-21 11:39yuminfeng728 Java教程

這篇文章主要為大家詳細介紹了java設計模式之組合模式Composite,具有一定的參考價值,感興趣的小伙伴們可以參考一下

概述

是一種結構型模式,將對象以樹形結構組織起來,以表示“部分 - 整體”的層次結構,使得客戶端對單個對象和組合對象的使用具有唯一性。

UML類圖

java設計模式之組合模式(Composite)

上面的類圖包含的角色:

Component:為參加組合的對象聲明一個公共的接口,不管是組合還是葉節點。
Leaf:在組合中表示葉子結點對象,葉子結點沒有子結點。
Composite表示參加組合的有子對象的對象,并給出樹枝構建的行為;

代碼示例

java" id="highlighter_475343">
?
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
import java.util.ArrayList;
import java.util.List;
 
abstract class Component {
 
  protected String name;
 
  public Component(String name) {
    this.name = name;
  }
 
  public abstract void Add(Component c);
 
  public abstract void Remove(Component c);
 
  public abstract void GetChild(int depth);
}
 
class Leaf extends Component {
 
  public Leaf(String name) {
    super(name);
  }
 
  @Override
  public void Add(Component c) {
    System.out.println("Can not add to a leaf");
  }
 
  @Override
  public void Remove(Component c) {
    System.out.println("Can not remove from a leaf");
  }
 
  @Override
  public void GetChild(int depth) {
    String temp = " ";
    for (int i = 0; i < depth; i++) {
      temp += "-";
      System.out.println(temp + name);
    }
  }
 
}
 
class Composite extends Component {
 
  private List<Component> children = new ArrayList<>();
 
  public Composite(String name) {
    super(name);
  }
 
  @Override
  public void Add(Component c) {
    children.add(c);
  }
 
  @Override
  public void Remove(Component c) {
    children.remove(c);
  }
 
  @Override
  public void GetChild(int depth) {
 
    for (Component c : children) {
      c.GetChild(depth);
    }
  }
 
}
 
public class Main {
 
  public static void main(String args[]) {
    Composite root = new Composite("root");
    root.Add(new Leaf("Leaf A"));
    root.Add(new Leaf("Leaf B"));
 
    Composite compX = new Composite("Composite X");
    compX.Add(new Leaf("Leaf XA"));
    compX.Add(new Leaf("Leaf XB"));
    root.Add(compX);
 
    Composite compXY = new Composite("Composite XY");
    compXY.Add(new Leaf("Leaf XYA"));
    compXY.Add(new Leaf("Leaf XYB"));
    compX.Add(compXY);
 
    root.GetChild(3);
  }
 
}

應用場景

1.要求表示對象的部分-整體層次結構。
2.想要客戶端忽略組合對象與單個對象的差異,客戶端將統一地使用組合結構中的所有對象。

組合模式定義由Leaf對象和Composite對象組成的類結構;
使得客戶端變得簡單;
它使得添加或刪除子部件變得很容易。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中国免费一级毛片 | 51国产偷自视频区视频小蝌蚪 | 日韩三级伦理在线观看 | 日本搞逼视频 | 黄色网址在线免费 | 欧美人与牲禽动交精品一区 | 精品一区二区三区免费爱 | 麻豆传传媒久久久爱 | 亚洲 91| 国产精品一区二区手机在线观看 | 日韩视频在线观看免费视频 | 国产免费午夜 | 国产一区在线观看视频 | 久久3 | 国产一级伦理片 | 亚洲成人在线免费观看 | 国产v综合v亚洲欧美久久 | 久久久国产一级片 | 久久一级| 91视频久久 | 天天操天天碰 | www亚洲成人| 黄色网战在线观看 | 精品视频一区二区三区四区 | 黄色网欧美 | 欧美中文字幕一区二区三区亚洲 | 亚洲成人精品久久 | 黄色av片在线观看 | 一本视频在线观看 | 91网站链接 | 色av网址| 一区二区三区精品国产 | 圆产精品久久久久久久久久久 | 亚洲免费视 | 亚洲99影视一区二区三区 | 日韩欧美电影在线观看 | 午夜精品久久久久久中宇 | 7777奇米成人四色影视 | www.54271.com| 久久免费视频3 | 亚洲精品成人久久 |