关于核心:从软件设计的角度看界面的使用

Use of interface from Software Design Point of view

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Use of Java [Interfaces / Abstract classes]

嗨,朋友们,

这不是关于任何新事物的问题,而是关于接口的问题。

我知道如何使用接口和什么是接口,但我想知道从设计的角度来看,接口实际上是如何帮助我们的。任何人都可以给我解释一下接口的使用。您可以为此提供任何示例。

谢谢。


您可以实现一些有价值的原则,即良好的软件设计与接口(抽象),原则/规则,如打开/关闭原则,关闭可修改但开放可扩展,或者使用组合而不是继承等。您可以使用多态性与接口(抽象)的好处,动态地改变程序行为。t运行时,如策略模式中所述。你可以在软件工程书籍中找到更多的东西,我认为不可能在一个线程中讨论所有这些。在计算机科学文档中搜索设计模式、面向对象编程、抽象。


从设计最佳实践的角度来看,编程到接口以及依赖注入(自动使用Spring或通过构造函数/设置器)的一大优点是它减少了代码中的耦合。这意味着每个单独的类都更加独立,对不可忽略细节的更改不太可能泄漏到其他类中。

如果您有一个具有强耦合的应用程序,它会导致所做的更改,从而在整个代码中产生连锁反应。

本质上,如果您编程到一个接口,那么您应该能够对实现进行底层更改,而不会在其他类中产生连锁反应。

"程序到接口"的最佳实践概念在《四人帮设计模式》一书中提出:http://en.wikipedia.org/wiki/design_patterns

另外,请查看以下PDF文件的第17页:http://userpages.umbc.edu/~tarr/dp/schooses/ooprinciples-2pp.pdf

它提供了一些优势,然后是一个代码示例。


从SCJP 6书中:

When you create an interface you're defining a contract for what a class can do, without saying anything about how the class will do it. An interface is a contract.

例如,当您有一个接口可移动时,您可以定义必须通过接口实现实现的方法,例如:drive()或setmovingspeed()。接口没有说明如何驾驶,只说明它在那里,应该由接口的子类(如bike或car)声明。


接口和抽象类都帮助您编程到接口,而不是具体的实现。

这意味着您可以更有效地使用OOP原则。我建议你读

Head First Object Oriented Design and Analysis

这本书对我帮助很大。