1

所以我正在用python为一个基于网络的游戏创建后端。目前它是这样工作的......

WebSocket 处理程序接收消息...

WebSocket 处理程序调用消息处理程序...

消息处理程序调用游戏类函数...

游戏类调用其他类来更新信息。

这是高度耦合的,可能应该采用模型-视图-控制器格式。所以我最终要改变这一点。

基本上我希望它像这样工作。

控制器已打开一个 WebSocket 处理程序。

WebSocket Handler 返回到 Controller a (1?)。

控制器使用 (1?) 调用消息处理程序。

消息处理程序返回到控制器 a (2?)。

控制器使用 (2?) 调用模型。

模型将更新发送到适当的位置。

所以这里有两个问题。

  1. 首先,当我在 WebSocket Handler 中收到消息时,它是 Tornado 的 WebSocketHandler 的一个实例,我不确定如何将任何内容返回给 Controller。仅仅是因为这是不可能的吗?我是否必须在 WebSocket 处理程序和消息处理程序之间保持少量耦合?我知道我总是可以在 Controller 中调用一个函数,但这似乎不是一个实际的修复,只是更多的函数调用。

  2. 有没有办法在 python 中传递函数调用,同时跟踪它的参数?这将是执行此操作的最佳方式,但我认为它不是用 python 语言实现的。否则,我觉得最好的方法是返回一个字典,其中包含要调用的函数名称的字段和参数的字段。这当然是更多的代码。如果可以避免,我想这样做,但我不确定该采取的方向。

感谢您的提示,这是一个很大的重构,我真的很紧张从哪里开始。

4

1 回答 1

1

对于您问题的第二部分,我相信您想使用部分功能。

查看:http ://docs.python.org/2/library/functools.html

基本上你会去:

from functools import partial

function_call(partial(future_function_call, future_argument))
于 2013-10-21T14:42:50.817 回答