[英]Composite design pattern with java.util.Map#putAll(Map)
我會通過Composite設計模式,發現java.util.Map#的putAll(圖)被提及作為例子在JDK.I復合模式是無法理解它是如何遵循復合模式。 我對此有幾個問題。
- putAll(map)如何成為復合模式?
- 使用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.