私はしばしば、以下のようなコードを書く必要がある状況に陥ります。IFステートメントの洪水なしにこれをきちんと行うためのデザインパターン-
A obj = new A();
B obj2 = new B();
for ( i = 1 ; i < 20 ; i ++ ) {
if( i == 1 )
obj.setField1(obj2.getOption1())
else if ( i == 2 )
obj.setField1(obj2.getOption2())
else if ( i == 3 )
obj.setField1(obj2.getOption3())
And so on.. for 20 times ..
obj.setField2(obj2.getNonOptionField2());
obj.setField3(obj2.getNonOptionField3())
}
編集 -
ここでのループとの類似点は、データベースでループしていて、各レコードが他のテーブルにさらに20個のレコードを作成することです。20のレコードでは、条件を追加したものを除いて、ほとんどの列は同じです。
ええ、デザインは最高ではありませんが、私には選択肢がありません。