From: Claus Spitzer Date: 2005-04-12T06:56:09+09:00 Subject: Factory design Greetings! A friend of mine has recently started using Ruby, and has run into a little problem. He is trying to create different objects depending on the contents of a string. His intuition is to use factory design for this, and he'd like to know if there is a Ruby Way to do this. Below is his original e-mail. Regards... -CWS ----8<---- Hello, I'm wondering if anyone can suggest a good Ruby idiom for the following problem. I'm pretty new to Ruby and am migrating from statically-typed languages like Java and C++. I have a string representation of some data that I want to read from an input source and load into a file. Based on what this input is, I want to create a subclass. The concrete example is that I have a number of "events" in a log file that I want to be able to create based on the input I read. There are three kinds of events: a Phase, an Interruption, and a Defect. Each one of them has a beginning time, a duration, and a comment. Phases can contain Interruptions and Defects. Defects can contain Interruptions and other Defects. In any case, I have an identifier on my log file that looks like "2005-01-04 23:34:12 begin_phase". If I see this, I want to create a "Phase" object. If it says "2005-01-04 23:52:16 begin_interruption", then I want to create an interruption instead. My intuition is that this is a typical Factory Design Pattern, so I would create a Ruby class method that creates the appropriate type based on the results of the string and returns it. However, someone familiar with Ruby told me that Ruby's dynamic typing and duck typing is such that this kind of solution "feels incorrect". Does anyone have suggestions as to what I can do? Thanks! -- -- Irwin (ihkwan at gmail.com)