セッターによる初期化

2006年2月9日

セッターを使用した初期化では、空のオブジェクトを作成し、セッターメソッドを使用してその場でさまざまなプロパティを設定します(ConstructorInitializationの代替)。

ファーストネーム、ラストネーム、好きなバーのコレクションを持つ人物を作成するには、以下のようなものになります。

#ruby
mf = Person.new
mf.firstname = 'Martin'
mf.lastname = 'Fowler'
mf.add_bar "Turner's Oyster Bar"
mf.add_bar "Square and Compass"

このアプローチにより、オブジェクトの配線が最大限に柔軟になり、特定の用途に必要な共同作業者のみを提供できます。

これにより、すべての値を一度に設定する必要から解放されます。これは、一部のオブジェクトは後でしか使用できない場合に便利です。

各メソッド呼び出しはコンパクトなので、コンストラクターへの長いパラメーターリストと、さまざまなコンストラクターを選択する必要がありません。

マルコ・シュルツは、セッターメソッドは新しいオブジェクトの用途を説明する名前を持つことを私に思い出させてくれました。これは、最近ほとんどの言語でしか使用できない位置パラメータのみを持つConstructorInitializationよりも顕著な利点です。非常に一般的な型(文字列など)を持つコンストラクターパラメータは、簡単に非常に難解になる可能性があります。