Node.js之单利模式

在iOS中我们经常用到单利模式,这样就能够实现在多处共享同一数据,那么在Node.js中也存在这种模式。

我们知道,Node.js中模块的概念很重要,在写模块的接口的时候,只需要暴露出一个实例对象就能实现单利模式。

这依赖于模块加载的缓存机制,在这篇文章中我给出了说明。Node.js之循环依赖

我们先看看一个简单的logger模块的代码:

class Logger {
    constructor(name) {
        this.name = name;
        this.count = 0;
    }

    log(message) {
        this.count++;
        console.log(`${this.name} ${message} count: ${this.count}`);
    }

    info(message) {
        this.log(`info: ${message}`);
    }

    verbose(message) {
        this.log(`verbose: ${message}`);
    }
}

module.exports = new Logger("DEFAULT");

代码很简单,用的是ES6的新语法,这些其实都是prototype的语法糖。那么再看看验证是否是单利的代码:

const logger = require("./logger.js");
logger.info("This is a message");
logger.verbose("This is a verbose message");

打印结果:

DEFAULT info: This is a message count: 1
DEFAULT verbose: This is a verbose message count: 2

通过count属性,我们发现确实符合单利模式特性。

以上这些内容来自于这本书nodejs-design-patternshttps://github.com/agelessman/MyBooks

目前国内的资料还是比较少的,像这么好的书,确实值得推荐。

posted @ 2017-10-12 11:41  马在路上  阅读(140)  评论(0编辑  收藏