加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby策略模式

发布时间:2020-12-17 04:07:55 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 class Hero def kill(bug,skill) skill.do(bug) endend class Skill def do(bug="bug") raise "This is abstract method" end end # 雷电 class Thund

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

class Hero
  def kill(bug,skill)
    skill.do(bug)
  end
end

 class Skill
   def do(bug="bug")
     raise "This is abstract method"
   end
 end

 # 雷电
 class Thunder < Skill
   def do(bug="bug")
    puts 'delay for 3 second'
     puts 'thunder 2 times'
     puts 'thunder continuely'
     puts "#{bug} HP -1000"
   end
 end
  # 地震
 class Earthquake < Skill
  def do(bug)
     puts "#{bug} HP -500"
     puts 'earthquick for 2 second'
    puts "#{bug} black out for 5 second"
   end
 end

 # 旋风
 class Whirlwind < Skill
   def do(bug)
     puts 'scope 100 tornado 5 second and move'
    puts "#{bug} HP continuely -150/per second "
   end
 end

 class ChristianStart<Skill
   def do(bug)
     puts "all enemy die!"
     puts "#{bug} die for ever!"
   end
 end

 puts "rn"
 puts 'beat pig'
 puts "------------"
 Hero.new.kill('pig',Thunder.new)

 puts "rn"
puts 'beat white'
 puts "------------"
 Hero.new.kill('white',Earthquake.new)

 puts "rn"
 puts 'beat ox'
 puts "------------"
 Hero.new.kill('ox',Whirlwind.new)
  puts "rn"
 puts 'beat all'
 puts "------------"
 Hero.new.kill("all enemies",ChristianStart.new)

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读