2014-07-22 38 views
2

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

+0

你为什么认为这是?代表团只是适配器的一部分。您需要使用哪些API但无法更改?假设你的意思是对象适配器。 – Fuhrmanator

回答

1

我会说这不是一个适配器。

适配器包装其他对象以更改其方法签名以匹配某个其他接口。这不是真的。 HashSet未将Map转换为Set。它只是在内部使用一套工具来完成它的工作。

如果你创建了一个有String字段的类,会说你正在修改字符串吗?不,你只是在使用它。

+0

将方法调用委托给HashMap使我认为它使用了适配器模式。所有的方法都将他们的工作委托给HashMap。 –

0

不是真的,因为功能正在流失。 A java.util.Set只存储密钥,而java.util.Map存储密钥和值。他们不相等。

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

相关问题