2014-07-22 67 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

相關問題