在Python中

时间:2017-11-24 10:36:58

标签: python python-3.x strategy-pattern

我有以下情况:

class Parser():

    def _parse_human(self, record):
        """returns parsed Human"""
        return

    def _parse_animal(self, record):
        """returns parsed Animal"""
        return

    def _parse_vehicle(self, record):
        """returns parsed Vehicle"""
        return

    def parse_object(self, record):
        """Should select the correct parsing method"""
        return


if __name__ == '__main__':
    parser = Parser()
    record = someObject.get_record()

    parsed_object = parser.parse_object(record)

我希望parse_object()方法查找并执行相应的解析方法,而不使用明确的if-else语句。

传入的记录包含一个包含数据库表名的字段,因此我可以确定应该将哪个对象解析为。

有没有办法在没有将函数显式映射到if-else语句中的表名字符串的情况下使其工作?我的目标是以后能够添加实体,而不必每次都更新if-else语句。

有没有任何pythonic方法来实现这一目标?我只是熟悉设计模式,策略模式似乎是一种合适的方法。但我不确定这是一种Pythonic的做事方式。

0 个答案:

没有答案