この際だから聞いてみようっと
たとえば、特定のコマンドによって挙動がかわるものを生成するとき

Hoge hoge;
switch(command)
{
 case 1:
  hoge = new Hoge1();
  break;
 case 2:
  hoge = new Hoge2();
  break;
}
※Hoge1、Hoge2はHogeのサブクラス。主要なメソッドは全部継承してる

というコードを書いてるんだけど、確かにスマートじゃないかも。
これをスマートに書こうと思ったらどうすればいいかな
無理にスマートにする必要もないかな?