- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我经常发现自己做了很多 delegating .
在Ruby Science ,它说:
Many delegate methods to the same object are an indicator that your object graph may not accurately reflect the real world relationships they represent.
和
If you find yourself writing lots of delegators, consider changing the consumer class to take a different object. For example, if you need to delegate lots of
User
methods toAccount
, it’s possible that the code referencingUser
should actually reference an instance ofAccount
instead.
这个我不是很懂。这在实践中看起来如何的示例是什么?
最佳答案
我想那一章的作者想说清楚,例如,写:
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
请注意,由于 delegate
,我们写的是 plan.price
,而不是 account.plan.price
。
很好的例子,但还有更多。
关于ruby - 在处理 Demeter 法则时,由于过度授权而需要更改消费者类的情况的示例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20155350/
我正在开发适用于 Wordpress 的 PSD,并面临着根据颜色过度对齐背景图像或相反的问题。 在桌面上一切都很好,但在移动设备上背景图像变小了(我使用了 background-size: 100%
在标准 Modelica 流体流量源中,通常指定流量或压力。例如,以下边界设置(P 表示压力边界,F 表示流量边界)通常会围绕管道组件: P - 管道 - P F - 管道 - P 但是,有时在同一侧
我正处于设计基于 Azure 的应用程序的早期阶段。考虑到我可能预期的需求的变化性,Azure 吸引我的地方之一是它的可扩展性。因此,我试图保持事物松散耦合,以便我可以在需要时添加实例。 我看到的关于
我与 Xcode 4 dot notation code sense problem 正好相反!点符号的代码完成不仅显示属性,还显示我的方法(在每个完成的左侧标记 P 或 M 分别指示它是属性还是方法
我是一名优秀的程序员,十分优秀!