class TJObservable
オブザーバーパターンを支援する Observable クラス(Subject/Publisher側)
継承:
Public メソッド
- TJObservable()
- コンストラクタ
- virtual void addObserver(TJObserver* o)
- Observer を追加する
- virtual void removeObserver(TJObserver* o)
- Observer を削除する
- virtual void removeObservers()
- 登録されているすべての Observer を削除する
- virtual void notifyObservers()
- Observable の変化を Observer に通知する
- virtual void notifyObservers(void* arg)
- Observable の変化を Observer に通知する
- virtual bool hasChanged() const
- 変化したかどうかを検査する
- virtual unsigned countObservers() const
- 現在の Observer の数を返す
- virtual void destroyObservers() const
- 登録されている Observer を delete (デストラクタ呼び出し)する
- virtual ~TJObservable()
- デストラクタ
- virtual bool isSafe() const
- スレッドセーフなものかどうかの検査
- virtual bool hasObserver(const TJObserver* o) const
- Observer を持っているかどうかの検査
文書
オブザーバーパターンを支援する Observable クラス(Subject/Publisher側).Observable は Observer へ自身の変化の通知する. Model-View で Model 側を演じるオブジェクトがこのクラスを継承する.
1つの Observable は複数の Observer を持つことができる.Observable の内部状態が変化したとき,アプリケーションは notifyObservers メソッドを よぶことによって,Observer の update を間接的に起動する.
通知の順序は規定されていない.
登録された Observer の delete(デストラクタ呼び出し) については, 基本的にはアプリケーションの責任とするが,明示的に destroyObservers を 呼ぶことで全 Observer に対して delete を呼び出すことができる.
[ロック方針]
このクラスは,マルチスレッドに関するロックを全く意識しない. 必要であれば TJSafeObservable を見よ.
- TJObservable()
- コンストラクタ
- virtual void addObserver(TJObserver* o)
- Observer を追加する.
- パラメータ:
- o - Observer オブジェクト.null なら無視.
- virtual void removeObserver(TJObserver* o)
- Observer を削除する.
Observer の delete (デストラクタ呼び出し)は行わない.
[note] java.util.Observable の deleteObserver というネーミングは C++ の delete 演算子 を連想させる名前なので,removeObserver とした.
- パラメータ:
- o - Observer オブジェクト
- virtual void removeObservers()
- 登録されているすべての Observer を削除する. このメソッドが呼ばれた後,通知すべき Observer のリストは空になる. 各 Observer の delete (デストラクタ呼び出し)は行わない.
- virtual void notifyObservers()
- Observable の変化を Observer に通知する. 変化は setChanged で設定でき,hasChanged によって検知され,clearChanged によってリセットすることができる. このメソッドは,observer の update を呼び出す. その際の第2引数は,0(NULL) となる.
const メソッドではないのは意図的である.このメソッドの中で呼ばれる Observer 側の update で,この Observable の non-const メソッドを 呼べるようにしている.
- 参照 :
- clearChanged()
hasChanged()
update()
- virtual void notifyObservers(void* arg)
- Observable の変化を Observer に通知する.
変化は setChanged で設定でき,hasChanged によって検知され,clearChanged によってリセットすることができる. このメソッドは,observer の update を呼び出す. その際の第2引数は,このメソッドに渡される arg である.
const メソッドではないのは意図的である.このメソッドの中で呼ばれる Observer 側の update で,この Observable の non-const メソッドを 呼べるようにしている.
- パラメータ:
- arg - アプリケーションで使用する任意のデータ
- 参照 :
- clearChanged()
hasChanged()
update()
- virtual bool hasChanged() const
- 変化したかどうかを検査する.
- 返す値 :
- true setChanged が呼ばれ,まだ通知されていない状態
- 参照 :
- clearChanged()
setChanged()
- virtual unsigned countObservers() const
- 現在の Observer の数を返す.
- 返す値 :
- 現在の Observer の数
- virtual void destroyObservers() const
- 登録されている Observer を delete (デストラクタ呼び出し)する.
基本的に Observer の delete はアプリケーションの責任とするが, アプリケーションがObserver 列の管理をしたくない場合,このメソッド が delete を支援する. Observer が自動変数の場合は,当然これを使用してはならない.
- virtual ~TJObservable()
- デストラクタ.
Observer のデストラクタは呼び出さないことに注意.
- 参照 :
- destroyObservers()
- virtual bool isSafe() const
- スレッドセーフなものかどうかの検査.
このクラス自身では false である. Observer が notifyObservers を行う際,このメソッド の返り値に応じて update/safeUpdate を呼び分ける.
- 返す値 :
- true スレッドセーフ
- virtual bool hasObserver(const TJObserver* o) const
- Observer を持っているかどうかの検査.
- パラメータ:
- o - Oberver オブジェクト
- virtual void setChanged()
- 変化したことをセットする
- virtual void clearChanged()
- 変化したことをクリアする. ある状態変化が,すべての Observer に通知されたときに notifyObservers から自動的に呼ばれる.
- 参照 :
- notifyObservers()
- 直接の子クラス:
- TJSafeObservable
- 作者 :
- hiranabe @date 1999,3/30
- 参照 :
- TJObserver
TJSafeObservable
索引(アルファベット順) HTMLクラス継承 または Java
This page was generated with the help of DOC++.