2つの場合のMVC/オブザーバー手法の類似物について説明してください。
- 不変オブジェクト(OOPスタイル)
- 不変データ(機能スタイル)
たとえば、次の簡単なGUIの例を考えてみましょう(ここでライブで試すことができますhttp://tinkerbin.com/0XDHRXIl [実行]ボタンをクリックして開始し、テキストが表示されるまで2秒待ちます)
プレイが簡単で、MVC / Observerが非常に自然であるため、JavaScriptで構築されています
// Model containing the data.
var Post = Backbone.Model.extend({})
var PostView = Backbone.View.extend({
initialize: function() {
// Registering view rendering method as
// an observer on the model.
this.model.on('all', this.render.bind(this))
},
// Every time state of model changes
// this method will be called.
render: function() {
// Printing value of model.text attriubute.
this.$el.html(this.model.get('text'))
return this
}
})
// Now, any time the model is updated the view will be also
// automatically updated.
post.set({text: "hello, it's me"})
しかし、Immutable OOPとFunctionalスタイルで同じことを行う方法がよくわかりません。どのような方法がありますか?