2

可以说我有这样的方法:

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知道如何绘制自己的接口来重构。然后具体的类喜欢Circle并将Rectangle实现draw(). 然后,上面的客户端代码如下所示(比前面的代码片段更具可读性和整洁性):

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

所以我的问题是关于switch在支持多态的 OO 语言中的用法。它总是被认为是反模式吗?有没有什么情况下开关可以成为救生员?

4

0 回答 0