随笔(2012-5-28读代码大全,未完待续)
摘记:尽量使用多态,避免大量的类型检查
频繁重复出现的case语句有时是在暗示,采用集成可能是种更好的设计选择--尽管并不总是这样。
switch (shape.type)
{
case Shape_Circle:
shape.DrawCircle();
break;
case Shape_Square:
shape.DrawSquare();
break;
……
}
在这个例子中,对
shape.DrawCircle()和
shape.DrawSquare()的调用应该叫shape.Draw()的方法来替代,因为无论形状是圆的还是方的都可以调用这个方法来绘制。
另外,case语句有时也用来把种类确时不同的对象和行为分开。下面就是一个在面向对象编程中合理采用case语句的例子:
switch(ui.Command()
)
{
case Command_OpenFile
:
OpenFile();
break;
case Command_Print:
Print();
break;
case Command_Save:
Save();
break;
……
}
此时也可以创建一个基类并派生一些派生类,再用多态的DoCommand()方法来实现每一种命令。但在像这个例子一样简单的场合中,DoCommand()意义实在不大,因此采用case语句才是最容易理解的方法。
未完待续(下次抽空整理下排版,上班时间抽空写的)