为什么要保持接口作为参考?

时间:2013-04-25 15:55:08

标签: java

我观察过Java编程语言,我们的代码如下:

List mylist = new ArrayList();

为什么我们不应该使用以下而不是上面的?

ArrayList mylist = new ArrayList();

5 个答案:

答案 0 :(得分:1)

虽然第二种选择是可行的,但在大多数情况下,第一种选择是可行的。通常,您希望对接口进行编码,以使代码更少耦合,更具凝聚力。这是一种数据抽象,其中mylist的用户(我建议使用myList),并不关心它的实际实现,只是它是一个列表。

答案 1 :(得分:1)

我们可能希望在某些时候更改基础数据结构,并且通过保留引用,我们只需要更改声明。

答案 2 :(得分:1)

Abstract Data Typespecific implementation的分离是object oriented programming的关键方面之一。

请参阅Interface Instansiation

答案 3 :(得分:0)

如果使用ArrayList,则表示它必须是ArrayList,而不是任何其他类型的List,要替换它,您必须更改对该类型的每个引用。如果您使用List,则表明List没有任何特殊之处,它被用作普通列表。只需更改一行即可将其更改为另一个列表。

答案 4 :(得分:0)

只是为了避免紧密耦合。从理论上讲,你应该永远不要将自己与实现细节联系起来,因为它们可能会改变,与接口契约相反,后者应该是稳定的。此外,它确实简化了测试。

您可以将界面视为总体合约,所有实施类必须遵守。相反,特定于实现的细节可能会有所不同,例如内部,访问等数据的表示方式 - 您不想依赖的信息。

相关问题