Mik*_*and 1 python design-patterns event-handling
我正在为 Detours 库创建一个 Python 包装器。该工具的一个部分是一个调度程序,用于将所有挂钩的 API 调用发送到各种处理程序。
现在我的代码是这样的:
if event == 'CreateWindowExW':
# do something
elif event == 'CreateProcessW':
# do something
elif ...
Run Code Online (Sandbox Code Playgroud)
这感觉很丑。是否有一种模式可以创建事件调度程序,而不必elif为每个 Windows API 函数创建一个分支?
一种很好的方法是定义一个类,该类具有等同于相关 API 函数名称的方法,以及一个分派到正确方法的分派方法。例如:
class ApiDispatcher(object):
def handle_CreateWindowExW(self):
# do whatever
def handle_CreateProcessW(self):
# do this one
def dispatch(self, event):
method = getattr(self, 'handle_%s' % event)
method()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
867 次 |
| 最近记录: |