Ruby/Design Patterns/Factory
Материал из Wiki.crossplatform.ru
(Различия между версиями)
ViGOur (Обсуждение | вклад) м (1 версия: Импорт выборки материалов по Ruby) |
Текущая версия на 17:57, 13 сентября 2010
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
Use class method to create object
class Shape def initialize(num_sides, perimeter) end def Shape.triangle(side_length) Shape.new(3, side_length*3) end def Shape.square(side_length) Shape.new(4, side_length*4) end end