Skip to content.

Sections
Personal tools
You are here: Home » ダウンロード » ThreadJack用 » doc » TJObservable

Document Actions

class TJObservable

オブザーバーパターンを支援する Observable クラス(Subject/Publisher側)

継承:


Public メソッド

[more]TJObservable()
コンストラクタ
[more]virtual void addObserver(TJObserver* o)
Observer を追加する
[more]virtual void removeObserver(TJObserver* o)
Observer を削除する
[more]virtual void removeObservers()
登録されているすべての Observer を削除する
[more]virtual void notifyObservers()
Observable の変化を Observer に通知する
[more]virtual void notifyObservers(void* arg)
Observable の変化を Observer に通知する
[more]virtual bool hasChanged() const
変化したかどうかを検査する
[more]virtual unsigned countObservers() const
現在の Observer の数を返す
[more]virtual void destroyObservers() const
登録されている Observer を delete (デストラクタ呼び出し)する
[more]virtual ~TJObservable()
デストラクタ
[more]virtual bool isSafe() const
スレッドセーフなものかどうかの検査
[more]virtual bool hasObserver(const TJObserver* o) const
Observer を持っているかどうかの検査

Protected メソッド

[more]virtual void setChanged()
変化したことをセットする
[more]virtual void clearChanged()
変化したことをクリアする

文書

オブザーバーパターンを支援する 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++.