Nakajijapan

生きるのに必死です。

Backbone.jsガイドブック読書会 第1章 続き

第1章の続き

Eventsあたりのところから

Eventsが提供しているインタフェースはオブザーバパターンを駆使してオブジェクト間の結合を「疎」に保たせている

と記述されている。

オブザーバパターンとは

購読者と発行者と呼ばれるオブジェクトが存在する。 発行者が購読者のメソッドを直接呼び出す代わりに、購読者は発行者 のイベントを購読する。イベントが発生したらそれを購読している オブジェクトに通知される。

発行者はだれが購読してるのか知らずに済む。

イベント駆動開発の技法。

詳細はここが分かりやすい。 http://www.techscore.com/tech/DesignPattern/Observer.html/

Backbone.jsでいう購読者と発行者

これを以下のようにして考えるとわかりやすい

  • 購読者: View
  • 発行者 : Model

Modelはだれが購読してるかしらなくていい、イベントを通知してあげればいいんです。

1
2
3
# viewの中で
var entry = new Entry();
entry.on('change', this.render());

メディエータパターン

複数オブジェクトの間を取り持つ仲介者と鳴るオブジェクトを用意し、オブジェクト間の連動の詳細をその仲介者に持たせる 個々のオブジェクトの独自性を高める

内容は理解できたけど、使いどころまだピンときていない。

ここに詳しく記述されていた。 http://www.techscore.com/tech/DesignPattern/Mediator.html/

コラムでのまめ知識

メモリーリークの問題からon() off()ではなくて listenTo() stopListening()を利用するといい v1.0からはView#remove()内部でstopListening() ViewではlistenToしてるので大丈夫!

Underscore.js

便利関数の紹介だった。

  • _.debounce()
    • 一定時間イベントが発生しなかったときに処理を実行する
  • _.throtte()
    • コールバックの実行頻度をさげる
  • _.delay()
    • 処理を遅らせる
  • _.defer()
    • コールバック関数の中で最後に実行されることを保証する

上記二つの関数は今にも使えそうな便利関数だったので導入していきたいな。

http://underscorejs.org/

見る限り処理を便利&スマートにしてくれるのでカジュアルにこれだけ導入でもありかもしれない。

さて来週からは第二章ですよ。