6. 디자인패턴 1/2
6. 디자인패턴 (1/2) 6 ~ 10
6.6 전략(Strategy)
// config.js const fs = require('fs'); const objectPath = require('object-path'); class Config { constructor(strategy) { // 전략 객체 : strategy this.data = {}; this.strategy = strategy; } get(path) { return objectPath.get(this.data, path); } set(path, value) { return objectPath.set(this.data, path, value); } read(file) { console.log(`Deserializing from ${file}`); this.data = this.strategy.deserialize(fs.readFileSync(file, 'utf-8')); } save(file) { console.log(`Serializing to ${file}`); fs.writeFileSync(file, this.strategy.serialize(this.data)); } } module.exports = Config; // strategies.js // json 전략 module.exports.json = { deserialize: data => JSON.parse(data), serialize: data => JSON.stringify(data, null, ' ') }; // ini 전략 (key=value 형식) const ini = require('ini'); module.exports.ini = { deserialize: data => ini.parse(data), serialize: data => ini.stringify(data) }; // configTest const Config = require('./config'); const strategies = require('./strategies'); const jsonConfig = new Config(strategies.json); jsonConfig.read('samples/conf.json'); jsonConfig.set('book.nodejs', 'design patterns'); jsonConfig.save('samples/conf_mod.json'); const iniConfig = new Config(strategies.ini); iniConfig.read('samples/conf.ini'); iniConfig.set('book.nodejs', 'design patterns'); iniConfig.save('samples/conf_mod.ini');
6.7 상태(state)
6.8 템플릿(Template)
6.9 미들웨어(Middleware)
6.9.1 미들웨어로서의 Express
6.9.2 패턴으로서의 미들웨어
6.9.3 MQ 용 미들웨어 프레임워크 만들기
6.9.4 Koa에서 제너레이터를 사용한 미들웨어
6.10 커맨드(Command)
장점
Last updated