事件处理程序应该直接响应事件吗?

时间:2012-06-18 19:21:29

标签: events node.js socket.io

我有一个socket.io服务器侦听套接字上的某些事件。每当触发事件时,它都会将事件数据传递给事件处理程序。我的问题是,如果事件处理程序有对服务器的引用,并直接响应这样的事件吗?

eventHandler.handle = function(event){
myServerReference.emit(event, etc);
}

或者事件处理程序在有数据要发送时触发事件,服务器应该监听它并处理数据发送,如下所示:

eventHandler.onResponse(function(data){ server.emit(data); }

从长远来看,哪种方法更好?有没有更好的方法来设计它?

1 个答案:

答案 0 :(得分:1)

虽然简短的回答是“它取决于”,但良好的OO做法是牢记"SOLID"的“S”:

  

在面向对象的编程中,single responsibility principle表明每个类应该只有一个责任,并且该责任应该由类完全封装。它的所有服务都应该与这一责任保持一致。

如果事件处理程序所在的代码单元执行过多(即执行其他人的工作),则应将该功能移至其他位置。