我经常发现自己在做很多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/

10-13 08:43