2017-02-27 64 views
0

我是模式的新手,并且想知道是否可以使用REST API来实现观察者模式。我目前的观点是,这是不可能的,因为REST更多的是拉式体系结构,而观察者更多是推式体系结构。是否可以使用REST API实现观察者模式

欢迎您的想法。

回答

0

对象维护依赖者/观察者列表,并在状态更改时自动通知它们。为了实现观察者模式,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

+0

我有这个标记的答案,因为它似乎仍将以实现“需要某种形式的推送通知现实时间“功能,如共享链接所示 – Goodman