Builderパターン

あまりにもパターンのボキャブラリーが少ないので増やさないとダメだよなぁ。
本にある例題を多言語にコンバートして勉強中。
本日はBuilderパターン。

class MyClass
   def initialize(str)
      @str = str
   end

   attr_accessor :name
end

とあったとき、

class BuilderA
   def initialize
      @str = ""
   end

   def add1stParam
      @str = @str + "hoge"
   end

   def add2ndParam
      @str = @str + "foo"
   end

   def getMyClass
      return MyClass.new(@str)
   end
end

と、builderを作る。
で、directorも作る。

class DirectorA
   def createMyClass(builder)
      builder.add1stParam
      builder.add2ndParam
      return builder.getMyClass
   end
end

これでパターンになる。メインを記述する。

builder = BuilderA.new
dirA = DirectorA.new

myclass1 = dirA.createMyClass(builder)

p myclass1.name

・・・ふむ。書けば納得。