装扮来玩装扮吧! DressUp 允许您指定可选择启用和禁用的命名方法覆盖集,形成一种动态的装饰器模式。

兼容性

DressUp 依赖于 Ruby 1.9.X 的哈希条目排序。

示例

以下为 Duck 类的定义,包含两种装扮:狗和机器人士兵。

  • 狗装扮:覆盖 name= 方法,将名称后加上 “Dog”;覆盖 speak 方法返回 “Woof!”。

  • 机器人士兵装扮:同样覆盖 speak,并添加了新方法 terminations


class Duck

  include DressUp

  attr_accessor :name, :age

  # 定义狗装扮

  costume :dog, :name= => lambda {|name| @name = name + \" Dog\"}

  # 其他装扮定义代码略

end