什么时候可以用支持多态的OO语言切换语句?

时间:2013-03-17 13:05:26

标签: oop design-patterns switch-statement

假设我有这样的方法:

public void sketch(Shape shape){
 switch(shape.getType){
   case CIRCLE: 
      Circle circle = (Circle)shape;
      circle.drawCircle();
      break;
   case RECTANGLE: 
      Rectangle rectangle= (Rectangle)shape;
      rectangle.drawRectanle();
      break;  

  }
}

通过拥有知道如何绘制自身的Shape接口,可以轻松地重构上述代码。然后,CircleRectangle等具体类将实现draw()。 然后,上面的客户端代码如下所示(比前一个代码段更可读,更整洁):

public void sketch(Shape shape){
   shape.draw();   
}

所以我的问题是关于支持多态的OO语言中 switch 的用法。 总是被视为反模式吗?当开关可以成为救生员时,是否有任何情况?

0 个答案:

没有答案