在iOS中咱们常常用到单利模式,这样就可以实如今多处共享同一数据,那么在Node.js中也存在这种模式。node
咱们知道,Node.js中模块的概念很重要,在写模块的接口的时候,只须要暴露出一个实例对象就能实现单利模式。git
这依赖于模块加载的缓存机制,在这篇文章中我给出了说明。Node.js之循环依赖github
咱们先看看一个简单的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的语法糖。那么再看看验证是不是单利的代码:less
const logger = require("./logger.js"); logger.info("This is a message"); logger.verbose("This is a verbose message");
打印结果:ui
DEFAULT info: This is a message count: 1 DEFAULT verbose: This is a verbose message count: 2
经过count属性,咱们发现确实符合单利模式特性。this
以上这些内容来自于这本书nodejs-design-patternshttps://github.com/agelessman/MyBooks。prototype
目前国内的资料仍是比较少的,像这么好的书,确实值得推荐。code