[解決済み】ObserverとObservableはいつ使うべき?
質問
面接官から聞かれました。
とは何ですか?
Observer
と
Observable
また、どのような場合に使用するのでしょうか?
私はこの言葉を知らなかったので、家に戻ってから、グーグルで
Observer
と
Observable
ということで、いろいろな資料から、いくつかのポイントをピックアップしてみました。
1)
Observable
はクラスであり
Observer
はインターフェースです。
2)
Observable
クラスは
Observer
s.
3)
Observable
オブジェクトが更新されると
update()
メソッドで、その
Observer
が変更されたことを通知する。
こんな例がありました。
import java.util.Observable;
import java.util.Observer;
class MessageBoard extends Observable
{
public void changeMessage(String message)
{
setChanged();
notifyObservers(message);
}
}
class Student implements Observer
{
@Override
public void update(Observable o, Object arg)
{
System.out.println("Message board changed: " + arg);
}
}
public class MessageBoardTest
{
public static void main(String[] args)
{
MessageBoard board = new MessageBoard();
Student bob = new Student();
Student joe = new Student();
board.addObserver(bob);
board.addObserver(joe);
board.changeMessage("More Homework!");
}
}
しかし、なぜ
Observer
と
Observable
? は何ですか?
setChanged()
と
notifyObservers(message)
のメソッドですか?
どのように解決するのですか?
具体的な例として、生徒とMessageBoardがあるとします。 生徒は、MessageBoard に新しいメッセージが投稿されたときに通知を受けたい Observers のリストに自分自身を追加することで登録します。 MessageBoard に Message が追加されると、Observers のリストを繰り返し、イベントが発生したことを通知します。
Twitterを思い浮かべてください。 あなたが誰かをフォローしたいと言うと、Twitterはあなたをその人のフォロワーリストに追加します。 相手が新しいつぶやきを送ると、それが入力に表示される。 この場合、あなたのTwitterアカウントはObserverで、あなたがフォローしている人はObservableです。
Twitterの方がメディエーターになる可能性が高いので、この例えは完璧ではないかもしれません。 しかし、これは要点を示しています。
関連
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] ThreadLocal変数はいつ、どのように使用すればよいですか?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] java.lang.ClassNotFoundException: クラス com.ibm.db2.jcc.DB2Driver が Worklight プラットフォームまたはプロジェクトに見つかりませんでした。
-
[解決済み] JavaにおけるMouseListenerとMouseAdapterの違いについて
-
[解決済み] HTTP ステータス 500 - サーブレットクラス pkg.coreServlet のインスタンス化に失敗しました。
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] タイプの安全性。アンチェック・キャスト
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み] オブザーバーはJava 9で非推奨となりました。 その代わりに何を使うべきですか?