Por ejemplo, que tengo debajo de código:
interface IAAA {
void aaa();
}
interface IBBB extends IAAA {
void bbb();
}
class MyClass implements IAAA, IBBB {
public void bbb() { }
public void aaa() { }
}
¿Hay algún beneficio de implementar IAAA
en MyClass
? Como se puede ver, IAAA
que ya se prolonga por IBBB
y MyClass
está llevando a cabo tanto IAAA
y IBBB
. Parece eliminación IAAA
del MyClass
no afecta a nada.
La razón por la que estoy haciendo esta pregunta tonta es, veo este tipo de patrones muy a menudo en Android
Proyecto Open Source y, a veces incluso en el estándar Java
API
tales como ArrayList
.
Un ejemplo que quiero hablar es SpannableStringBuilder
.
Spanned
interfaz extiende CharSequence
interfaz.
Spannable
interfaz extiende Spanned
interfaz.
Editable
interfaz se extiende tanto CharSequence
y Spannable
de interfaz.
SpannableStringBuilder
implementa la clase CharSequence
, Spannable
, Editable
nuevo en la interfaz.
Realmente no lo entiendo. ¿Cuál es el punto de hacer de esta manera? ¿Por qué molestarse?
No hay ninguna razón técnica. Puede que sea un poco más fácil en necesidad de mantenimiento Si la barra se extiende Foo y que desea encontrar todas las clases que implementan Foo, sólo tiene que buscar Foo y no foo y bar.