Robert Klemme wrote: > Sam Kong wrote: >> end >> def blue >> puts Color.red >> puts Color.blue >> >> >> Is this one of design patterns, or just a simple idiom? >> It's similar to a factory method pattern but it's not according to the >> definition. >> Is there any name for it? > > Since you invoke a class's method "new" like any other method of any > other object (no special syntax) you can say with some justification > that all classes are basically factories. > > IMHO your example is not optimal because it wastes resources. Since > Color is immutable anyway constants seem a better choice: > > Color = Struct.new :r, :g, :b > class Color > def to_s > sprintf "R: 0x%02x, G: 0x%02x, B: 0x%02x", self.r, self.g, self.b > end > > RED = new 0xFF, 0x00, 0x00 > BLUE = new 0x00, 0x00, 0xFF > GREEN = new 0x00, 0xFF, 0x00 > end I was thinking along the same lines, but I do like the method interface (e.g. Color.red over Color::RED). My suggestion would have been something like: class Color ... class << self def red @red ||= new 255, 0, 0 end ... end end -- -- Jim Weirich -- Posted via http://www.ruby-forum.com/.