美文网首页
表驱动 与 函数字典

表驱动 与 函数字典

作者: zestloveheart | 来源:发表于2019-04-22 15:21 被阅读0次

    介绍

    表驱动法是一种编程模式(Scheme),从表里面查找信息而不使用逻辑语句(if 和case)
    它的好处是消除代码里面到处出现的if、else、swith语句,让凌乱代码变得简明和清晰。
    对简单情况而言,表驱动方法可能仅仅使逻辑语句更容易和直白,但随着逻辑的越来越复杂,表驱动法就愈发有吸引力。

    正文

    假如要实现以下功能,
    输入('+',a,b),要返回 a+b
    输入('-',a,b),要返回a-b

    用if实现
    def test(c,a,b):
        if c == '+':
            return a + b
        elif c == '-':
            return a - b
    

    如果要加新的功能,比如 乘*、除/,就要更改test代码为

    def test(c,a,b):
        if c == '+':
            return a + b
        elif c == '-':
            return a - b
        elif c == '*':
            return a * b
        elif c == '/':
            return a / b
    

    那每当要添加该函数的功能,就必须修改该函数的内容。这样就破坏了封装性和违背了开闭原则

    表驱动

    利用表驱动,可以解决这个问题。

    def add(a,b):
        return a+b
    
    def minus(a,b):
        return a - b
    
    func_dict = {'+':add,'-':minus}
    print(func_dict['+'](1,2))
    

    要加入乘法函数,只需添加一个mul函数,然后修改func_dict字典。

    def mul(a,b):
        return a * b
    func_dict = {'+':add,'-':minus,'*':mul}
    print(func_dict['*'](1,2))
    

    这里的func_dict实际上就作为表驱动中的表给出,可以视作为一个配置文件,是动态更改的。
    另外一些基础用法可见下面的两篇参考博客,也写的挺好。

    参考

    https://blog.csdn.net/qq_22555107/article/details/78884261
    https://www.cnblogs.com/winner-0715/p/9382048.html#_label0

    相关文章

      网友评论

          本文标题:表驱动 与 函数字典

          本文链接:https://www.haomeiwen.com/subject/oamlgqtx.html