gpt4 book ai didi

java - 与 java.util.Map#putAll(Map) 的复合设计模式

转载 作者:行者123 更新时间:2023-11-30 02:35:03 24 4
gpt4 key购买 nike

我正在浏览复合设计模式,发现 java.util.Map#putAll(Map) 被提到为 example对于 JDK 中的复合模式。我无法理解它如何遵循复合模式。我对此有几个疑问,如下。

  1. How putAll(map) is composite pattern?
  2. How part-whole relationship is defined when using putAll?

谁能帮我理解一下。

最佳答案

I am not able to understand how it follows composite pattern.

别担心,那只是因为它不是复合模式的示例。

java.util.Map#putAll(Map m) 改变 Map this 以将所有其他 Map m 的元素添加到其中它。之后,这两个 map 就没有父子关系了。

如果它组成了它们,那么这个测试就会通过:

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 操作 Compose,但这会违反 LSP和一个source of astonishment .

关于java - 与 java.util.Map#putAll(Map) 的复合设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43308706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com