我经常发现自己在做很多delegating。
在Ruby Science中,它表示:
同一对象的许多委托方法都是
对象图可能无法准确反映真实世界的关系
他们代表。
和
如果你发现自己写了很多委托书,可以考虑更改
消费者类获取不同的对象。例如,如果您需要
将许多User
方法委托给Account
,有可能
代码引用实际上应该引用
取而代之的是。
我真的不明白。这在实践中会是怎样的一个例子?
最佳答案
我想这一章的作者想明确一点,例如,写下:
class User
def discounted_plan_price(discount_code)
coupon = Coupon.new(discount_code)
coupon.discount(account.plan.price)
end
end
注意,在用户模型上使用
account.plan.price
可以更好地完成delegate
,例如:class User
delegate :discounted_plan_price, to: :account
end
它允许您编写以下内容:
class User
def discounted_plan_price(discount_code)
account.discounted_plan_price(discount_code)
end
end
class Account
def discounted_plan_price(discount_code)
coupon = Coupon.new(discount_code)
coupon.discount(plan.price)
end
end
注意,由于
plan.price
,我们写的是account.plan.price
,而不是delegate
。很好的例子,但还有很多。
关于ruby - 在处理《得墨meter耳定律》时,有什么例子说明由于过度授权而需要更改消费者类别的情况?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20155350/