observerパターンについて勉強中です。下のサイトを参考にしています
http://www.fuka.info.waseda.ac.jp/~washi/m_html/ …
もしVectorを使って、データを挿入し(更新し)、それをobserverに通知したいという場合はたとえばどのようにconcreteSubjectクラスはかけるのでしょうか。
subjectStateを訳すとデータの状態?なので、subjectStateを具体的にデータを保持するVectorオブジェクトの参照変数とするのべきなのでしょうか?
http://www.hellohiro.com/pattern/observer.htm
こちらのサイトでは型がStringで、"NEW"といったような文字をセットしたりしていますが、そういうデータの状態を表す指標(Vectorなら要素数とか?)をsbjectStateに入れておくべきで、データ本体は別のフィールドとして持たせるということなのでしょうか・・・?
自分で言っていてもなんかあほらしい質問なのですが、どうもこのクラス図の見方になれていないので、アドバイスをいただければと思います。
No.2ベストアンサー
- 回答日時:
#1です。
>subjectStateを訳すとデータの状態?なので、
>subjectStateを具体的にデータを保持するVectorオブジェクトの
>参照変数とするのべきなのでしょうか?
>そういうデータの状態を表す指標(Vectorなら要素数とか?)を
>sbjectStateに入れておくべきで、データ本体は別のフィールドとして
>持たせるということなのでしょうか・・・?
getState()というのは、「観察対象のデータを取得するメソッド」なので、
「getState()で何を返すべきか」は、
「そもそも何を観察したかったのか」ということだと思う。
Vectorそのものを観察したかったのなら、Vectorそのものを返せばよいし、
重要機密書類を観察したかったのなら、重要機密書類を返せばよい。
---
getState()というのは単に、
(その「観察したかった」データへの)アクセス手段でしかない。
だから、そんな「アクセス手段」をいくつだけ、どこに、どのように用意するかは、
自由。(Observerパターンの規定する範疇ではない。)
「用意したければ、用意する」という感じ、と言ってもいいかも。
…と思う。
---
参考URL
http://www.objectclub.jp/technicaldoc/pattern/eDWP
の「複数の通知先」「Observerパターン」
「内容の通知 - Push型/Pull型のObserverパターン」
参考URL:http://www.objectclub.jp/technicaldoc/pattern/eDWP
No.1
- 回答日時:
>Vectorを使って、データを挿入し(更新し)、
>それをobserverに通知したいという場合はたとえばどのように
>concreteSubjectクラスはかけるのでしょうか。
「Observerパターンとして」は、
「観察者に見せるデータ」は、「何でもいい」と思う。
private Vector subjectState;
/*Vectorそのものを返す*/
public Vector getVector(){
return subjectState;
}
または
/*要素を返す*/
public MyData getElement(int index){
return (MyData)subjectState.elementAt(index);
}
/*要素数を返す*/
public int getSize(){
return subjectState.size();
}
のように「2本立て」にしても、構わないと思う。
ようは観察者側で「Vector内部の全要素が見られれば」それで十分なわけだから。
---
どっちがいいか、どれがいいかは、
デザインパターンとはまた別の話になると思う。
たとえば観察者にVectorを見せてしまえば、
観察者側からVectorを操作(add()やremove())される可能性が出てくる。
…と思う。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS WEBサイトの構築。表示データとWEBデザインを分離する考え方を専門用語・業界用語では何と言うか? 8 2022/09/27 09:16
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Excel(エクセル) Excelの複数人での参照について 2 2022/06/01 13:38
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- ネットワーク OSI参照モデルの各層の役割がわかりません。 3 2023/04/21 21:12
- USBメモリー・SDカード・フラッシュメモリー 銀行が振込データの受け渡しに未だにFDを使っている理由は「FDDがAドライブ固定だから」って本当? 11 2022/06/02 03:53
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- Excel(エクセル) Excelでのデータ管理 6 2022/12/24 09:33
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
Accessで該当データにフラグを...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
MSCommを用いたRS-232-Cデータ転送
-
S9タイプからXタイプにデータ...
-
EXCELVBAでSQLserverからデータ...
-
[C言語] コメント文字列を無視...
-
PLSQLで文字列置換
-
VBAを使ってOutlookメール本文...
-
fortranでフーリエ変換→パワー...
-
VBA 毎日取得するデータを順番...
-
カンマからスラッシュに
-
C# ソケット通信でデータ受信時...
-
HTMLでテキストボックスで...
-
PDOオブジェクトは使い回し可能?
-
Excelのマクロでワードのテキス...
-
Excelの関数で表示されているデ...
-
GETはできるがPOSTができない、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
Excelのマクロでワードのテキス...
-
エクセルで2つの時系列のデー...
-
この行は既に別のテーブルに属...
-
VBAを使ってOutlookメール本文...
-
シーケンサにパソコンからアク...
-
EXCELVBAでSQLserverからデータ...
-
ブレーカー落ちで壊れたりしな...
-
[C言語] コメント文字列を無視...
-
オープンチヤットでデータ削除...
-
モジュラス103の算出方法について
-
javaでDBからデータを取ってき...
-
カンマからスラッシュに
-
VBA 毎日取得するデータを順番...
-
Android携帯をUSBメモリ代わりに
おすすめ情報