イベントドリブンのモデルには pull 型と push 型がある


Observer パターン、というか一般的なイベントドリブンのモデルには、pull 型と push 型がある。オブジェクト倶楽部の説明がわかりやすい。

  1. pull 型 – Observer 側が通知受理時に情報を Observable 側に問い合わせる
  2. push 型 – Observable 側が通知時に情報を Observer に渡す

    単純なコードにすると、pull 型は

    hoge.addEventListener(Event.CHANGE, function(event:Event):void {
    trace(event.target.foo);
    });
    

    push 型は、

    hoge.addEventListener(Event.CHANGE, function(event:Event):void {
    trace(event.foo);
    });
    

    となる。

    自分はその辺は割といい加減 (pull 型をよく使う) に設計しているが、依存関係が異なることに注意したい。

    上記のコードでは、addEventListener しているコンテキストでイベントの処理をしているので、pull 型でも push 型でも、実質的な依存度は同じだが、

    hoge.addEventListener(Event.CHANGE, dispatchEvent);
    

    このコードでは、hoge の存在を知らない別のコンテキストでイベント処理が行われる (委譲) ので、push 型が適している。

    カテゴリー: Flash   パーマリンク

    コメントをどうぞ

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    *

    次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>