假设我有这样的方法:
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();
}
所以我的问题是关于支持多态的OO语言中 switch 的用法。 总是被视为反模式吗?当开关可以成为救生员时,是否有任何情况?