我是模式的新手,想知道是否可以使用REST API实现观察者模式。我目前的观点是不可能的,因为REST更像是拉式架构,而观察者更像是推式架构。
欢迎您的想法。
最佳答案
一个对象维护一个依赖项/观察者列表,并在状态更改时自动通知它们。为了实现观察者模式,EventEmitter得以解救
// MyFancyObservable.js
var util = require('util');
var EventEmitter = require('events').EventEmitter;
function MyFancyObservable() {
EventEmitter.call(this);
}
util.inherits(MyFancyObservable, EventEmitter);
就是这个;我们只是做了一个可观察的对象!为了使它有用,让我们为其添加一些功能。
MyFancyObservable.prototype.hello = function (name) {
this.emit('hello', name);
};
太好了,现在我们的可观察事件可以发出事件-试试看吧!
var MyFancyObservable = require('MyFancyObservable');
var observable = new MyFancyObservable();
observable.on('hello', function (name) {
console.log(name);
});
observable.hello('john');
欲了解更多详情,请点击链接
Fundamental Node.js Design Patterns
Immediate State Updates for REST/HTTP APIs using Observer Pattern