簡體   English   中英

使用java.util.Map#putAll(Map)的復合設計模式

[英]Composite design pattern with java.util.Map#putAll(Map)

我會通過Composite設計模式,發現java.util.Map#的putAll(圖)被提及作為例子在JDK.I復合模式是無法理解它是如何遵循復合模式。 我對此有幾個問題。

  1. putAll(map)如何成為復合模式?
  2. 使用putAll時如何定義整體關系?

誰能幫我理解它。

我無法理解它如何遵循復合模式。

不用擔心,這僅僅是因為它不是復合模式的示例。

java.util.Map#putAll(Map m) Map this突變,以在其中添加所有其他Map m的元素。 之后,這兩個地圖沒有父子關系。

如果由它們組成,則此測試將通過:

Map<String, String> map = new HashMap<>();
Map<String, String> child = new HashMap<>();
map.putAll(child); // "Compose" map and child according to article author
child.put("A", "1"); // modify child
assertEquals("1", map.get("A")); // Fails, map is not composed of child

我在那里使用過HashMap ,但是Map所有Java實現都可以那樣工作,任何理智的Map實現也應該如此。 您可以編寫自己的Map實現以使此putAll操作構成,但是這違反了LSP令人驚訝來源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM