Шаблон FactoryMethod на Ruby

Я изучаю шаблоны проектирования. Как вы думаете, это подходящий пример шаблона FactoryMethod?

Есть Подразделение и его подклассы: Солдат и Доктор. Они могут как-то приветствовать. Есть также UnitFactory, SoldierFactory и DoctorFactory. Они производят соответствующие единицы.

class Unit
  class GreetError < StandardError; end

  def greet; raise GreetError; end
end

class Soldier < Unit
  def greet; 'I am a soldier'; end
end

class Doctor < Unit
  def greet; 'I am a doctor'; end
end

class UnitFactory
  class CreateUnitError < StandardError; end

  def create_unit; raise CreateUnitError; end
end

class SoldierFactory < UnitFactory
  def create_unit; Soldier.new; end
end

class DoctorFactory < UnitFactory
  def create_unit; Doctor.new; end
end

class Army
  attr_reader :unit_factory, :count, :units

  def initialize(unit_factory, count)
    @unit_factory = unit_factory
    @count = count
    @units = []

    gather
  end

  def gather
    count.times { units << unit_factory.create_unit }
  end

  def greet
    units.map { |unit| unit.greet }
  end
end

0 ответов

Другие вопросы по тегам