セッターによる初期化では空のオブジェクトを構築し、セッターメソッドを使用してさまざまなプロパティをセットアップする。(コンストラクタによる初期化の別の手段。)

名前、姓、お気に入りのバーのコレクションを持つPersonオブジェクトの生成は次のようになる。

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

このアプローチでは、オブジェクトへの関連付けに対する最大限の柔軟性が得られ、特定の用途に必要なコラボレーターだけを提供することができる。

これにより一度にすべての値をセットする必要がなくなる。一部のオブジェクトを後になってからしか利用できない場合に便利だろう。

各メソッド呼び出しはコンパクトであり、コンストラクタへの長いパラメータリストや、異なる複数のコンストラクタの中から選ばなければならないといった問題を回避できる。

Marko Schulzは、セッターメソッドは新しいオブジェクトの用途を説明する名前を付けられることを思い起こさせてくれた。これは位置パラメータしか持たない現代の多くの言語によるコンストラクタによる初期化よりも明らかな利点である。非常に一般的な型(文字列など)を持つコンストラクタのパラメータは、とても分かりにくいものになる可能性があるからだ。