Mega Code Archive

 
Categories / Ruby / Design Patterns
 

Factory pattern

class Animal   def initialize(name)     @name = name   end   def eat     puts("#{@name} is eating.")   end   def speak     puts("#{@name} says !")   end   def sleep     puts("#{@name} sleeps; ")   end end class Zoo   def initialize(number_animals)     @animals = []     number_animals.times do |i|       animal = new_animal("Animal#{i}")       @animals << animal     end   end   def action     @animals.each {|animal| animal.speak}     @animals.each {|animal| animal.eat}     @animals.each {|animal| animal.sleep}   end end class AnimalZoo < Zoo   def new_animal(name)     Animal.new(name)   end end pond = AnimalZoo.new(3) pond.action