随笔(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语句才是最容易理解的方法。

 

未完待续(下次抽空整理下排版,上班时间抽空写的)

posted @ 2012-05-29 16:55  有态度的80后  阅读(133)  评论(0编辑  收藏  举报