FactoryMethod その3

IDCardとIDCardFactoryは強い依存関係にある。
しかも型が無いため抽象クラスのようなものは必要ない。
それらを考慮するとこうしてもいいかも。

module FactoryMethod
  module Factory
    def create(*arg)
      product = new(*arg)
      puts product.owner
      product
    end
  end
  class IDCard
    extend Factory
    def initialize(str)
      @owner = str
    end
    def owner
      "#{@owner}のカード"
    end
  end
end
FactoryMethod::IDCard.create("tarou")

TemplateMethodですねこれじゃあ。
FactoryMethodTemplateMethodの応用ということで。