Composite with Push and index Operators

2019-06-16 02:09栏目:技术创新

class Job
  attr_reader :name

  def initialize(name)
    @name = name
  end

  def get_time_required
    0.0
  end
end

class SubJob1 < Job
  def initialize
    super('sub job 1')
  end

  def get_time_required
    1.0             # 1 minute to add flour and sugar
  end
end

class SubJob2 < Job

  def initialize
    super('sub job 2')
  end

  def get_time_required
    3.0             # Mix for 3 minutes
  end
end

class CompositeJob < Job
  def initialize(name)
    super(name)
    @sub_jobs = []
  end

  def add_sub_job(job)
    @sub_jobs << job
  end

  def remove_sub_job(job)
    @sub_jobs.delete(job)
  end

  def get_time_required
    time=0.0
    @sub_jobs.each {|job| time  = job.get_time_required}
    time
  end

  def <<(job)
    @sub_jobs << job
  end
  def [](index)
    @sub_jobs[index]
  end
  def []=(index, new_value)
    @sub_jobs[index] = new_value
  end

end

composite = CompositeJob.new('example')
composite << SubJob2.new
puts(composite[0].get_time_required)
composite[1] = SubJob1.new

版权声明:本文由新浦京娱乐站_新浦京娱乐场官网_新浦京娱乐发布于技术创新,转载请注明出处:Composite with Push and index Operators