我是模式的新手,想知道是否可以使用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

10-05 21:04