初歩的なことで申し訳ないのですが、質問です。

敵の基底クラスEnemyからEnemy1, Enemy2, Enemy3...を派生させて番号からこれを生成したいのですが、

Enemy CreateEnemy(int num)
{
switch(num)
{
case 1: return new Enemy1();
case 2: return new Enemy2();
...
}
}
とやる以外に何かよい方法はないでしょうか? どなたか教えて下さい。