2011-12-01 63 views
5

object2發生某些狀態更改時,我需要在object1上執行一些任務。 我試圖在android中使用可觀察模式,我的意思是使用Observer和Observable類,所以object1實現了Observer和object2擴展了Observable。不幸的是,object2已經從另一個類擴展,所以我不能將它定義爲Observable的擴展。可選擇的可觀察模式?

是否有另一種使用這種模式的替代方案?也許其他類允許我執行此行爲?

謝謝。

回答

8

只需添加到object2Observable型的方法,其觀察員和上notifyObservers()在某些事情發生變化時被調用

這就是「支持繼承」的意思。

+0

謝謝!對我而言足夠了。 kostja的解決方案聽起來不錯,但需要額外的努力。 – forumercio

+0

這是一個「危險的」解決方案。雖然它也適用於我。但是,另外你應該提到,要將你的課程或者至少將所有相關屬性聲明爲私有。當你的課程被另一個課程擴展時,這是保持你的可觀察工作的唯一方法... – Sauer

6

擴展內置的Observable類實現觀察者模式是一個相當糟糕的選擇,因爲它破壞了你的類層次結構,但你已經知道了。

更好的方法是定義自己的Observable接口並讓你的類實現它。您還需要一個Listener接口,用於監聽類添加

你需要在你的Observable接口被addListener(Listener listener)removeListener(Listener listener)