我在github上经常看到这个,我没有看到这些关系中的优点,甚至是使用接口。
情况:库有一个基类Article
,它被声明为抽象的,应该被扩展。为什么它实现ArticleInterface
基本上是:
interface ArticleInterface
{
// some getter
// some setter
// getter...
// setter....
// etc...
}
我没有看到在此设置中使用Interface?抽象类本身并不足够,因为它已经定义了那些getters / setter 和属性(它实现了接口)。这里唯一的接口是强制属性声明,它不应该是它的重点,对吗?
答案 0 :(得分:3)
接口使类更加灵活。最后,它确实是您要定义的界面。抽象类允许您定义类接口的一些重要部分以及(某些)实现。接口更加抽象,仅定义必要功能的接口,并将实现完全留给实现者。
你应该这样考虑:接口是定义,抽象类只是它的一个示例实现。如果此骨架实现适合您的目的,请扩展它并使用它。否则,如果您不能或不想继承特定的类,您可以以任何方式实现该接口。您不必强制扩展特定的类,您可以使用自己的类层次结构。
有关为什么要在界面中思考以及为什么去耦非常重要的更多信息,您可能需要阅读this article。