我似乎遇到了很多情况,当我重构一个类时,我经常创建几个方法,除了将信息传递给新的(现在的)从属类之外什么都不做。所以说我有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中看不到任何相同的东西..是吗?
答案 0 :(得分:4)
如果你正在使用Rails(你标记了它),你可以使用delegate method:
class Widget
delegate :foo, :bar, :to => '@obj2'
end
然后在Widget实例上调用foo方法只会在@ obj2上调用它。