您能否在两种情况下解释 MVC / Observer 技术的类似物:
- 不可变对象(OOP 风格)
- 不可变数据(函数式)
例如,让我们考虑以下简单的 GUI 示例(您可以在此处实时试用http://tinkerbin.com/0XDHRXIl单击“运行”按钮启动它并等待 2 秒以显示文本)
它是用 JavaScript 构建的,因为它很容易玩,而且 MVC / Observer 对它来说非常自然
// 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"})
但是我不太明白如何对不可变 OOP 和功能样式做同样的事情,有什么方法?