如何更优雅的实现工厂模式或其他解决方法

场景是这样的
commands目录中会有一堆的py文件。每个文件都是一个class。每个class都有不同的方法。

比如

#user.py

class user():
    def login():
        pass

# order.py

class order():
    def close(order_id):
        pass

像这种文件在commands目录中有很多,而且随时会增加或者减少。有一个daemon.py会根据MQ消息队列的命令动态的实例化某个命令并且传递对应的参数过去。

# daemon.py 伪代码
import commands

while True:
    message = json.loads(mq.receive())
    if not hasattr(commands, message['class'])
        logger.warn("error")
    command = commands[message['class']]()
    command. message['action'] (message) ????

应该如何实现或者我不应该这么用python?用php用惯了吗?

阅读 1.6k
1 个回答

自问自答。

module = __import__('module.%s' % modulename)
class_ = module()
func = getattr(class_, 'func')
func()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进