用多态代替条件语句(尤其是重复的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();
网友评论