Builder Pattern

class Director
  def initialize
    @process = [:create_ear, :create_body, :create_tail]
  end

  def build(builder)
    @process.each do |p|
      builder.send(p)
    end
  end
end

class Humanbuider
  def create_ear
    raise 'Abastract method'
  end

  def create_body
    raise 'Abastract method'
  end

  def create_tail
    raise 'Abastract method'
  end
end

class Manbuider < Humanbuider
  def create_ear
    puts '小耳朵'
  end

  def create_body
    puts '一般'
  end

  def create_tail
    return
  end
end


class Avatarbuider < Humanbuider
  def create_ear
    puts '尖耳朵'
  end

  def create_body
    puts '蓝身体'
  end

  def create_tail
    puts '长尾巴'
  end
end

direct = Director.new
direct.build(Manbuider.new)
direct.build(Avatarbuider.new)

Builder Pattern

你可能感兴趣的:(Pattern)