编程接口是什么意思?

我一直在大多数与编程相关的站点上听到该声明:


编程到接口而不是实现


但是我不明白其中的含义吗?

例子会有所帮助。


编辑:即使我也收到了很多很好的答案,所以您可以用一些代码片段来补充它,以便更好地理解该主题。谢谢!


手掌心
浏览 1042回答 3
3回答

回首忆惘然

您可能正在寻找这样的东西:public static void main(String... args) {&nbsp; // do this - declare the variable to be of type Set, which is an interface&nbsp; Set buddies = new HashSet();&nbsp; // don't do this - you declare the variable to have a fixed type&nbsp; HashSet buddies2 = new HashSet();}为什么第一种方法被认为是好的?稍后再说,您决定需要使用其他数据结构,例如LinkedHashSet,以便利用LinkedHashSet的功能。必须更改代码,如下所示:public static void main(String... args) {&nbsp; // do this - declare the variable to be of type Set, which is an interface&nbsp; Set buddies = new LinkedHashSet();&nbsp; // <- change the constructor call&nbsp; // don't do this - you declare the variable to have a fixed type&nbsp; // this you have to change both the variable type and the constructor call&nbsp; // HashSet buddies2 = new HashSet();&nbsp; // old version&nbsp; LinkedHashSet buddies2 = new LinkedHashSet();&nbsp;}这看起来还不错,对吧?但是,如果您以同样的方式编写吸气剂怎么办?public HashSet getBuddies() {&nbsp; return buddies;}这也必须更改!public LinkedHashSet getBuddies() {&nbsp; return buddies;}希望您能看到,即使使用像这样的小程序,也对声明变量类型具有深远的影响。如果仅依赖于将变量声明为接口,而不是作为该接口的特定实现(在这种情况下,将其声明为接口),那么对象的来回移动无疑会大大简化程序的编写和维护。集,而不是LinkedHashSet或其他值)。可能就是这样:public Set getBuddies() {&nbsp; return buddies;}另一个好处是,(至少对我而言)差异有助于我更好地设计程序。但是希望我的示例可以给您一些想法...希望能有所帮助。

守着星空守着你

一天,他的老板指示一名初级程序员编写一个应用程序来分析业务数据,并将其汇总为带有指标,图形和所有其他内容的漂亮报告。老板给他一个XML文件,上面写着“这是一些示例业务数据”。程序员开始编码。几周后,他觉得度量,图形和内容足以使老板满意,于是他介绍了他的工作。老板说:“那太好了,但是它还能显示我们拥有的这个SQL数据库中的业务数据吗?”程序员回到编码。在他的整个应用程序中都有用于从XML读取业务数据的代码。他重写了所有这些代码片段,并以“ if”条件包装它们:if (dataType == "XML"){&nbsp; &nbsp;... read a piece of XML data ...}else{&nbsp; &nbsp;.. query something from the SQL database ...}当看到该软件的新版本时,老板回答:“太好了,但是它还能报告来自该Web服务的业务数据吗?” 记住所有那些他必须重写的乏味的if语句,程序员变得很生气。“首先是xml,然后是SQL,现在是Web服务!真正的业务数据源是什么?”老板回答:“任何可以提供的东西”那时,程序员很受启发。
打开App,查看更多内容
随时随地看视频慕课网APP