nodejs 设计思想杂记 三 observer模式
来源:互联网 发布:网络电视能连手机吗 编辑:程序博客网 时间:2024/06/16 15:58
观察者模式:一个对象,当其状态改变时能够通知一系列的观察者。
EventEmitter
看图说话
使用方法:
var EventEmitter = require('events').EventEmitter;
var eeInstance = new EventEmitter();
提供有几个接口:
on(event, listener): 对event与linstener的绑定,listener可以是function
once(event, listener):功能同上,但是收到过一次event就解除绑定
emit(event, [arg1], […]): 发送event
removeListener(event, listener):解除绑定
使用方法:
var EventEmitter = require('events').EventEmitter;
var util = require('util');
var fs = require('fs');
function FindPattern(regex) {
EventEmitter.call(this);
this.regex = regex;
this.files = [];
}
util.inherits(FindPattern, EventEmitter);
FindPattern.prototype.addFile = function(file) {
this.files.push(file);
return this;
};
FindPattern.prototype.find = function() {
var self = this;
self.files.forEach(function(file) {
fs.readFile(file, 'utf8', function(err, content) {
if(err)
return self.emit('error', err);
self.emit('fileread', file);
var match = null;
if(match = content.match(self.regex))
match.forEach(function(elem) {
self.emit('found', file, elem);
});
});
});
return this;
};
obsever
var findPatternObject = new FindPattern(/hello \w+/);
findPatternObject
.addFile('fileA.txt')
.addFile('fileB.json')
.find()
.on('found', function(file, match) {
console.log('Matched "' + match + '" in file ' + file);
})
.on('error', function(err) {
console.log('Error emitted ' + err.message);
});
- nodejs 设计思想杂记 三 observer模式
- nodejs 设计思想杂记一 reactor模式
- nodejs 设计思想杂记四 异步控制流模式
- 【设计模式】之三Observer
- nodejs设计思想杂技二 callback 模式
- 设计模式:Observer模式
- 设计模式-Observer 模式
- 设计模式----Observer模式
- 设计模式 - Observer模式
- 设计模式----Observer模式
- 【设计模式】Observer模式
- 设计模式--Observer 模式
- 设计模式系列之三:观察者模式(Observer Pattern)
- 设计模式(三)观察者模式Observer(发布订阅)
- 设计模式笔记——(三:观察者模式 Observer Pattern)
- Android框架设计模式(三)——Observer Method
- 设计模式之Observer
- 设计模式之Observer
- 【工具】ubantu下装sublime的文章
- c++ visual studio 2013连接mysql
- mysql 定时器实例
- Leetcode Contains Duplicate
- UVa 437
- nodejs 设计思想杂记 三 observer模式
- 知道一个IP地址,如何计算出它的子网掩码啊?
- 索引的访问-SQL Server
- tomcat源码解析(二)--web.xml文件的解析
- 使用p6spy 2监控及打印Spring 4 JdbcTemplate生成的SQL语句
- HTML学习笔记(上)
- Android Studio配置greenDao框架详解--说说那些坑
- Android开发中内存泄露与优化
- Leetcode Contains Duplicate II