2011-12-01 17 views
5

Necesito realizar algunas tareas en object1 cuando ocurre algún cambio de estado en object2. Estaba tratando de usar un patrón observable en Android, me refiero a utilizar Observer y clases observables, por lo que object1 implementa Observer y object2 extiende Observable. Lamentablemente, object2 ya se extiende desde otra clase, por lo que no puedo definirlo como una extensión de Observable.¿Alternativa al patrón observable?

¿Hay alguna otra alternativa para usar este patrón? ¿Quizás otras clases que me permitan realizar este comportamiento?

Gracias.

Respuesta

8

sólo tiene que añadir a object2 un campo de tipo Observable al que se añaden los observadores y en el que notifyObservers() se llama cuando algo cambia.

Esto es lo que significa "favorecer la composición sobre la herencia".

+0

gracias! eso es suficiente para mi. La solución de kostja también suena bien, pero requiere un esfuerzo adicional. – forumercio

+0

Esta es una solución "peligrosa". Aunque también funcionará para mí. Pero, además, deberías haber mencionado, para FINALIZAR tu clase o al menos declarar todas las propiedades relevantes como privadas. Esta es la única manera de mantener su trabajo observable, cuando su clase se extiende por otra ... – Sauer

6

Extender la clase Observable incorporada es una opción bastante mala para implementar el patrón de observador ya que interrumpe la jerarquía de su clase, pero eso ya lo sabe.

Una mejor manera sería definir su propia interfaz Observable y dejar que su clase la implemente. También necesitará una interfaz Listener para las clases de oyentes

Los métodos que se necesitan en la interfaz Observable se addListener(Listener listener) y removeListener(Listener listener)