【发布时间】:2016-08-14 23:58:06
【问题描述】:
我一直在考虑在我使用 es6 构建的 express 应用中实现 依赖注入 的想法。 实际项目如下所示:
/controllers/myController.controller.js
import express from 'express';
import MyModel from '/models/myModel.model.js';
class MyController{
constructor(){
this.router = express.Router();
}
getAll(){
var modelInstance = new MyModel();
this.router.get('/', (req , res) => {
res.send(modelInstance.getData());
});
}
}
/models/myModel.model.js
export class MyModel{
constructor(){
}
getData(){
return 'it\'s working';
}
}
但我认为更好的办法是像这样导出一个类的实例:
/models/myModel.model.js
class MyModel{
constructor(){
}
getData(){
return 'it\'s working';
}
}
//export a new instance
export const ModelInstance = new MyModel();
然后像这样修改控制器
/controllers/myController.controller.js
import express from 'express';
//inject a new instance of the model
import {modelInstance} from '/models/myModel.model.js';
class MyController{
constructor(){
this.router = express.Router();
}
getAll(){
this.router.get('/', (req , res) => {
res.send(modelInstance.getData());
});
}
}
我不知道我的想法是否正确,但我认为这个例子是关于这种模式的一个很好的应用。
您对此有何看法?
【问题讨论】:
-
你发明了一个单例。
-
@zerkms 不是工厂吗?
-
export const ModelInstance = new MyModel();--- 不是,您创建一个实例并提供对它的全局访问。 -
@zerkms 哦,谢谢。我测试了它,你是对的。这是一个单身人士!
-
@zerkms 如何按照工厂模式导出?
标签: javascript design-patterns dependency-injection ecmascript-6