美文网首页CODING - 让开发更简单!
《代码大全》——用多态代替条件语句

《代码大全》——用多态代替条件语句

作者: 猿哥媛姐 | 来源:发表于2016-06-23 11:56 被阅读184次

    用多态代替条件语句(尤其是重复的case语句) 结构化程序里很多的case语句中的逻辑都可以被放到继承关系中,通过多态函数调用实现。

    《代码大全2》是个大部头,全书900多页,让人望而生畏。但是还是有好多东西,作者只是点到为止,细节的东西还要自己去深究。在《重构》这一章中,提到了用多态代替条件语句(尤其是重复的case语句)。作者对此只是简单地说明了一下,而没有更多的说明。当然作者还是很负责任的,他告诉了读者可以在《重构:改善既有代码的设计》中详细了解。

    可能自己没有很多的项目积累,对上面这段话不太理解(找个不懂的理由~_~)。而且,手上这个大部头已经让自己很头疼了,再去找一本书来看,估计自己非得疯掉不可。剩下的办法就是参考一些别人的理解咯。

    网上找一找,这篇还不错 简洁代码之道(1):用多态替代条件语句 - 推酷

    别人的终究是别人的,要吸收成自己的,才算是真正的收获。

    基本的意思是,如果你的代码中出现了多次重复的

    第1处

    if(state == A){

    // do A1

    }

    else if(state ==B){

    // do B1

    }

    else if(state ==C)

    {

    // do C1

    }

    第2出

    if(state == A){

    // do A2

    }

    else if(state ==B){

    // do B2

    }

    else if(state ==C)

    {

    // do C2

    }

    ......

    第 n处

    if(state ==A){

    // do An

    }

    else if(state ==B){

    // do Bn

    }

    else if(state ==C)

    {

    // do Cn

    或等价的case语句。其中,每个地方的do somthing是不一样的,这个时候可以考虑用在继承关系中用多态来实现。如下图(原谅我懒得用软件画图了,而且方向还不对):

    《代码大全》——用多态代替条件语句

    那么,上面的代码修改为

    第一处

    F f = Factory.createF(state)//更具state创建具体的子类实例

    f.func1();

    相关文章

      网友评论

        本文标题:《代码大全》——用多态代替条件语句

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