2011-12-01 14 views
5

object2で何らかの状態変更が発生した場合、object1でいくつかのタスクを実行する必要があります。 私はアンドロイドでオブザーバブルパターンを使用しようとしていました。つまり、ObserverクラスとObservableクラスを使用するということです。つまり、object1はObserverを実装し、object2はObservableを拡張します。残念ながら、object2はすでに別のクラスから拡張されているため、Observableの拡張として定義することはできません。観測可能なパターンの代わりに?

このパターンを使用する別の方法はありますか?私がこの動作を実行できる他のクラスですか?

ありがとうございました。

答えて

8

追加されたリスナークラスのListenerインターフェースが必要になります何かが変わったときに呼び出されます。

これは、「継承を優先して合成する」という意味です。

+0

ありがとう!私にはそれで充分です。 kostjaのソリューションも良いとは言えますが、追加の努力が必要です。 – forumercio

+0

これは「危険な」解決策です。それは私のためにも機能しますが。しかし、あなたのクラスをFINALIZEするか、関連するすべてのプロパティをプライベートとして宣言する必要があります。これは、あなたのクラスが別のクラスによって拡張されたときに、あなたの観察可能な作業を維持する唯一の方法です... – Sauer

6

Observableビルトインクラスを拡張することは、オブザーバーパターンを実装するにはかなり悪い選択ですが、それはクラス階層を混乱させますが、すでに知っています。

より良い方法は、独自のObservableインターフェイスを定義して、クラスに実装させることです。また、あなたはObservableインタフェースで必要となる

方法は単純にオブザーバーが付加されたタイプObservableの分野object2にしてnotifyObservers()れているaddListener(Listener listener)removeListener(Listener listener)

関連する問題