我有一个Event的基类。有多个派生类,例如:
NetworkEvent,IOEvent等。
每个事件都有一个表示特定事件类型的值,因此可能:
11 -> NetworkEvent (TCP send)
12 -> NetworkEvent (TCP receive)
14 -> IOEvent (File Open)
给定一个包含类型的事件,以及与该类型相关的其他参数,我想返回适当类的实例。
因此,例如:
{"type": 11, "member1":"192.168.1.1", "member2":80}
将返回IP地址为192.168.1.1:80的NetworkEvent实例
{"type": 14, "member1":"C:\temp\file.txt", "member2":"DOMAIN\user"}
将使用用户DOMAIN \ user为文件“ C:\ temp \ file.txt”返回IOEvent(根据类型ID进行解析)
在python中这样做的正确方法是什么?
我假设理解类型(11、12等)的逻辑应该在Event类中,对吗?
我没有尝试任何特定的东西,因为这主要是关于设计正确性。
最佳答案
我建议使用一个接受字典作为参数的工厂函数-这可以检查给定字典的“类型”值,然后构造并返回相应Event子类的实例。