我有以下代码:
interface IAAA {
void aaa();
}
interface IBBB extends IAAA {
void bbb();
}
class MyClass implements IAAA, IBBB {
public void bbb() { }
public void aaa() { }
}
实施有什么好处吗 IAAA
在 MyClass
? 如你所见, IAAA
已由扩展 IBBB
以及 MyClass
正在实现这两个目标 IAAA
以及 IBBB
. 好像要搬走了 IAAA
从 MyClass
不会影响任何事情。
我问这个愚蠢的问题的原因是,我经常看到这种模式 Android
开源项目,有时甚至在标准中
Java API
例如 ArrayList
.
我想说的一个例子是 SpannableStringBuilder
. Spanned
接口扩展 CharSequence
接口。 Spannable
接口扩展 Spanned
接口。 Editable
接口扩展了 CharSequence
以及 Spannable
接口。 SpannableStringBuilder
类实现 CharSequence
, Spannable
, Editable
再次接口。
我真的不明白。这样做有什么意义?为什么要麻烦?
2条答案
按热度按时间2wnc66cl1#
没有技术上的原因。这可能会使维护变得更容易—如果bar扩展了foo,并且希望找到实现foo的所有类,那么只需查找foo,而不必查找foo和bar。
ldioqlga2#
文件,强调了
MyClass
必须实施IAAA
,而不强制代码的(人类)读者查看IBBB
知道这一点。