Guest User

Untitled

a guest
Apr 26th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. # adapter pattern.rb
  2.  
  3. class Player
  4. def attack
  5. raise "pls override"
  6. end
  7.  
  8. def defense
  9. raise "pls override"
  10. end
  11. end
  12.  
  13. # 后卫
  14. class Guards < Player
  15. attr :name
  16. def initialize(name)
  17. @name = name
  18. end
  19.  
  20. def attack
  21. puts "后卫 #{name} 进攻"
  22. end
  23.  
  24. def defense
  25. puts "后卫 #{name} 防守"
  26. end
  27. end
  28.  
  29. # 外籍中锋
  30. class ForeignCenter < Player
  31. attr :name
  32. def initialize(name)
  33. @name = name
  34. end
  35.  
  36. def chinese_attack
  37. puts "外籍中锋 #{name} 进攻"
  38. end
  39.  
  40. def chinese_defense
  41. puts "外籍中锋 #{name} 防守"
  42. end
  43. end
  44.  
  45. class Translator < Player
  46. attr :wjzf
  47.  
  48. def initialize(name)
  49. @wjzf ||= ForeignCenter.new(name)
  50. end
  51.  
  52. def attack
  53. @wjzf.chinese_attack
  54. end
  55.  
  56. def defense
  57. @wjzf.chinese_defense
  58. end
  59.  
  60. end
  61.  
  62. m = Guards.new("麦迪")
  63. m.attack
  64. m.defense
  65.  
  66. ym = Translator.new("姚明")
  67. ym.attack
  68. ym.defense
Add Comment
Please, Sign In to add comment