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

用多态代替条件语句(尤其是重复的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是不一样的,这个时候可以考虑用在继承关系中用多态来实现。如下图(原谅我懒得用软件画图了,而且方向还不对):

图片发自App

那么,上面的代码修改为

第一处

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

f.func1();

你可能感兴趣的:(《代码大全》——用多态代替条件语句)