我有一个socket.io服务器侦听套接字上的某些事件。每当触发事件时,它都会将事件数据传递给事件处理程序。我的问题是,如果事件处理程序有对服务器的引用,并直接响应这样的事件吗?
eventHandler.handle = function(event){
myServerReference.emit(event, etc);
}
或者事件处理程序在有数据要发送时触发事件,服务器应该监听它并处理数据发送,如下所示:
eventHandler.onResponse(function(data){ server.emit(data); }
从长远来看,哪种方法更好?有没有更好的方法来设计它?
答案 0 :(得分:1)
虽然简短的回答是“它取决于”,但良好的OO做法是牢记"SOLID"的“S”:
在面向对象的编程中,single responsibility principle表明每个类应该只有一个责任,并且该责任应该由类完全封装。它的所有服务都应该与这一责任保持一致。
如果事件处理程序所在的代码单元执行过多(即执行其他人的工作),则应将该功能移至其他位置。