在我的nodejs项目中,我有类似于socketio的函数。
socket.on('draw', function (data) {
socket.broadcast.to(socket.room).emit('draw', data);
addEvent(socket, ["draw", data]);
});我想把它们改写成这样:
function onDraw(socket, config) {
return function (data) {
socket.broadcast.to(socket.room).emit('draw', data);
addEvent(socket, ["draw", data]);
}
}
socket.on('draw', onDraw(socket, config));其思想是,通过像这样将所有函数放在简单的闭包中,我可以将它们放在不同的模块中,并且通过将模拟对象传递给构造回调的函数来简化测试。
发布于 2014-06-30 08:18:23
IMHO --它并不过分,这只是命令模式的Javascript (或functional)形式,与依赖项注入一起使用。
实现这一目标的经典OO等效方法是构造一个命令类,通过构造函数传递socket和config,将它们存储在一些成员变量中,并使用该成员变量添加一个成员函数(如Draw(data) )。这将导致更多的样板代码--而您的示例与OO版本相比非常简洁。
https://softwareengineering.stackexchange.com/questions/246388
复制相似问题