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自分自身を描画する方法を知っているインターフェースを持つことで簡単にリファクタリングできます。次に、具象クラスがCircleRectangleを実装しdraw()ます。上記のクライアント コードは、次のようになります (前のスニペットよりもはるかに読みやすく、整理されています)。

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

だから私の質問は、ポリモーフィズムをサポートするオブジェクト指向言語でのswitchの使用法に関するものです。それは常にアンチパターンと見なされますか? スイッチが命の恩人になる状況はありますか?

4

0 に答える 0