为了账号安全,请及时绑定邮箱和手机立即绑定

编程接口是什么意思?

编程接口是什么意思?

手掌心 2019-11-30 11:21:11
我一直在大多数与编程相关的站点上听到该声明:编程到接口而不是实现但是我不明白其中的含义吗?例子会有所帮助。编辑:即使我也收到了很多很好的答案,所以您可以用一些代码片段来补充它,以便更好地理解该主题。谢谢!
查看完整描述

3 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

您可能正在寻找这样的东西:


public static void main(String... args) {

  // do this - declare the variable to be of type Set, which is an interface

  Set buddies = new HashSet();


  // don't do this - you declare the variable to have a fixed type

  HashSet buddies2 = new HashSet();

}

为什么第一种方法被认为是好的?稍后再说,您决定需要使用其他数据结构,例如LinkedHashSet,以便利用LinkedHashSet的功能。必须更改代码,如下所示:


public static void main(String... args) {

  // do this - declare the variable to be of type Set, which is an interface

  Set buddies = new LinkedHashSet();  // <- change the constructor call


  // don't do this - you declare the variable to have a fixed type

  // this you have to change both the variable type and the constructor call

  // HashSet buddies2 = new HashSet();  // old version

  LinkedHashSet buddies2 = new LinkedHashSet();

 }

这看起来还不错,对吧?但是,如果您以同样的方式编写吸气剂怎么办?


public HashSet getBuddies() {

  return buddies;

}

这也必须更改!


public LinkedHashSet getBuddies() {

  return buddies;

}

希望您能看到,即使使用像这样的小程序,也对声明变量类型具有深远的影响。如果仅依赖于将变量声明为接口,而不是作为该接口的特定实现(在这种情况下,将其声明为接口),那么对象的来回移动无疑会大大简化程序的编写和维护。集,而不是LinkedHashSet或其他值)。可能就是这样:


public Set getBuddies() {

  return buddies;

}

另一个好处是,(至少对我而言)差异有助于我更好地设计程序。但是希望我的示例可以给您一些想法...希望能有所帮助。


查看完整回答
反对 回复 2019-11-30
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

一天,他的老板指示一名初级程序员编写一个应用程序来分析业务数据,并将其汇总为带有指标,图形和所有其他内容的漂亮报告。老板给他一个XML文件,上面写着“这是一些示例业务数据”。


程序员开始编码。几周后,他觉得度量,图形和内容足以使老板满意,于是他介绍了他的工作。老板说:“那太好了,但是它还能显示我们拥有的这个SQL数据库中的业务数据吗?”


程序员回到编码。在他的整个应用程序中都有用于从XML读取业务数据的代码。他重写了所有这些代码片段,并以“ if”条件包装它们:


if (dataType == "XML")

{

   ... read a piece of XML data ...

}

else

{

   .. query something from the SQL database ...

}

当看到该软件的新版本时,老板回答:“太好了,但是它还能报告来自该Web服务的业务数据吗?” 记住所有那些他必须重写的乏味的if语句,程序员变得很生气。“首先是xml,然后是SQL,现在是Web服务!真正的业务数据源是什么?”


老板回答:“任何可以提供的东西”


那时,程序员很受启发。


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 988 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信