MediatorとObserverの違い

個人開発したアプリの宣伝
目的地が設定できる手帳のような使い心地のTODOアプリを公開しています。
Todo with Location

Todo with Location

  • Yoshiko Ichikawa
  • Productivity
  • Free

復習したのでメモ。

Mediator

mediatorは状態が変更された時にmediator自身に変更を通知するオブジェクトを返す。

実装のイメージ。コンパイルは通らない。

class mData{
  Mediator mediator;
  change(){
    mediator.notify();
  }
}

class Mediator {
   mData mData;
   Mediator(){
       mData = new mData();
       mData.mediator = this;
   }
   notify(){
     //mDataから通知がくる
   }
}

Mediator m = new Mediator();
mData d = m.mData;
d.change(); // notifyが呼ばれる
Observer

observerはオブジェクトを操作した時、登録しておいたobserverに通知する。

class Observer{
    notify( Worker w ){
      //通知がくる
    }
}

class Worker{
  Observer observer;
   work(){
     observer.notify( this );
   }
}

Worker w = new Worker();
Observer o = new Observer();
w.observer = o;
w.work(); //通知が呼ばれる

イメージだけ。

複数のオブジェクトから通知が欲しい( Mediator )、複数のオブジェクトに通知をする( Observer ) 。のようなイメージ。