可以说我有这样的方法:
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 语言中的用法。它总是被认为是反模式吗?有没有什么情况下开关可以成为救生员?