今日の勉強
- デザインパターン入門
- Factory Methodパターン
具体的な生成方法を知らなくても、Factoryに生成してもらうことで、抽象的に扱えるようにするもの。
# factory method pattern # factory class class Factory def create(owner) p = create_product(owner) register_product(p) p end def create_product(owner) raise 'called abstract create_product method' end def register_product(p) raise 'called abstract register_product method' end end # IDCard class class IDCard def initialize(owner) puts "make card of #{owner}" @owner = owner end def use puts "use card of #{owner}" end attr_reader :owner end # IDCardFactory class class IDCardFactory < Factory def initialize @owners = [] end def create_product(owner) IDCard.new(owner) end def register_product(p) @owners << p end attr_reader :owners end # main factory = IDCardFactory.new card1 = factory.create("aaa") card2 = factory.create("bbb") card3 = factory.create("ccc") card1.use card2.use card3.use
サンプルのまんま。もうちょっとRubyらしく書きたい。