为什么有些API主要提供接口,而不是类?

时间:2010-04-30 19:12:52

标签: java api class interface

某些Java API提供了大量接口和很少的类。例如,the Stellent/Oracle UCM API由大约80%的接口/ 20%的类组成,许多类只是例外。

优先选择接口到类的技术原因是什么?这只是努力减少耦合吗?改善封装/信息隐藏?还有别的吗?

5 个答案:

答案 0 :(得分:9)

最大限度地提高他们在幕后更改底层类的灵活性。

只要接口/合同保持不变,他们就可以随意更改实现类,而不必担心影响使用其库的人员。

答案 1 :(得分:3)

它们专为第三方提供实施。

一个经典而成功的例子是JDBC(22个接口,7个具体类)

我们的想法是提供一个... well ...程序员接口(API),以便客户端(使用该代码的客户端)可以自由地转发这些API提供的功能,而无需担心底层实现。

其他原因是,可能存在仍然不存在的现有提供程序(即FutureSQL),但它可以实现此接口并且您将能够使用它。

答案 2 :(得分:0)

很可能,框架/ API是用Dependency Injection开发的,可扩展性,低耦合度和高内聚性

答案 3 :(得分:0)

如果每个类实现了大量的接口,那么相对于类数的接口数并不是那么重要。

答案 4 :(得分:0)

最好的例子之一是java.sql包。

原因是: 当设计师对于需要完成什么以及整个应用程序[尚未设计]如何构建时有一个明确的想法,他们通过API作为一堆接口提供这个想法。

例如: 当SUN(现在oracle :-()发布JDBC的API时,整个SQL包(大部分都是)只是具有非常好定义的互操作性的接口;但是DB / RDBMS的实际供应商知道如何做以便他们这样做实现API中预期的结果。

因此,当数据库供应商单独编写数据库时,您可以单独编写ur java和DB交互。 供应商必须编写符合API(接口)标准的驱动程序,而不是告诉您他是如何做到的。

然而,你的应用程序和数据库可以解决任何问题[大部分时间都是如此; - )]

这是一个很长的答案,但希望这会有所帮助。 谢谢,

Ayusman