某些Java API提供了大量接口和很少的类。例如,the Stellent/Oracle UCM API由大约80%的接口/ 20%的类组成,许多类只是例外。
优先选择接口到类的技术原因是什么?这只是努力减少耦合吗?改善封装/信息隐藏?还有别的吗?
答案 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