我最近查看了HashSet Collection类的源代码 并发现它得到了HashMap的支持。 HashSet将其所有方法调用委托给HashMap。所以我只是想知道这是适配器模式的一个很好的例子。
答案 0 :(得分:1)
我会说它不是适配器。
适配器包装其他对象以更改其方法签名以匹配其他某些接口。这不是真的。 HashSet
并未将Map
变为集合。它只是在内部使用一组来完成它的工作。
如果你创建了一个具有String
字段的类,会说你正在调整字符串吗?不,你刚刚使用它。
答案 1 :(得分:0)
不是真的,因为功能正在被丢失。 java.util.Set
仅存储密钥,而java.util.Map
存储密钥和值。他们不是平等的。
适配器通常是将一个接口适配到另一个接口的东西,其中两个接口执行相同/相似的操作,但具有不同的签名。例如,可以使适配器使java.util.Enumeration
适应java.util.Iterator
。或者也许是java.io.InputStream
和java.io.Writer
之间的适配器,例如java.io.InputStreamWriter
。