FactoryMethod その4
今回は動的にFactoryを生成しています。
るびまの添削記事からパクりました。
module FactoryMethod class IDCard def initialize(str) @owner = str end def use "#{@owner}のカードを使います" end end class Factory def create(str) create_product(str) end def self.define(&block) c = Class.new(Factory) c.module_eval(&block) c.new end def self.product(klass) define_method(:create_product) { |str| klass.new str } end end end include FactoryMethod fac = Factory.define { product IDCard } card = fac.create("gorou") puts card.use
動的にするとRubyらしさが漂ってきます。
使いどころが難しいですが、楽しいですね。