有没有办法让对象传递可以自动共享的方法?

时间:2011-05-22 18:32:02

标签: ruby-on-rails ruby

我似乎遇到了很多情况,当我重构一个类时,我经常创建几个方法,除了将信息传递给新的(现在的)从属类之外什么都不做。所以说我有Obj1,它有15种方法,我最终将4移动到Obj2。现在我在Obj1中有4个方法只是:

def foo arg1, arg2
   @obj2.foo arg1, arg2
end

def bar arg1
   @obj2.bar arg1
end

我认为可以通过一种方式来访问这些删除了一个级别的方法。像:

 foo, bar = @obj2.foo, @object2.bar 

@obj2.release(:foo, :bar)`   

当然,它必须传递所有方法参数。看起来这是python中的一个概念,称为描述符,但我在Ruby中看不到任何相同的东西..是吗?

1 个答案:

答案 0 :(得分:4)

如果你正在使用Rails(你标记了它),你可以使用delegate method

class Widget
  delegate :foo, :bar, :to => '@obj2'
end

然后在Widget实例上调用foo方法只会在@ obj2上调用它。