Java中的HashSet实现是适配器模式的一个很好的例子

时间:2014-07-22 14:11:00

标签: java design-patterns adapter

我最近查看了HashSet Collection类的源代码 并发现它得到了HashMap的支持。 HashSet将其所有方法调用委托给HashMap。所以我只是想知道这是适配器模式的一个很好的例子。

2 个答案:

答案 0 :(得分:1)

我会说它不是适配器。

适配器包装其他对象以更改其方法签名以匹配其他某些接口。这不是真的。 HashSet并未将Map变为集合。它只是在内部使用一组来完成它的工作。

如果你创建了一个具有String字段的类,会说你正在调整字符串吗?不,你刚刚使用它。

答案 1 :(得分:0)

不是真的,因为功能正在被丢失。 java.util.Set仅存储密钥,而java.util.Map存储密钥和值。他们不是平等的。

适配器通常是将一个接口适配到另一个接口的东西,其中两个接口执行相同/相似的操作,但具有不同的签名。例如,可以使适配器使java.util.Enumeration适应java.util.Iterator。或者也许是java.io.InputStreamjava.io.Writer之间的适配器,例如java.io.InputStreamWriter