gpt4 book ai didi

ruby-on-rails - rails 的多级委托(delegate)是否违反得墨忒耳法则?

转载 作者:数据小太阳 更新时间:2023-10-29 08:30:50 25 4
gpt4 key购买 nike

Rails 允许我们使用类似宏的简单语法将方法委托(delegate)给其他对象。但是,我对一个特定案例感到困惑。

如果我委托(delegate)一个方法获取一个对象,然后将另一个方法委托(delegate)给那个新对象,是否会违反得墨忒耳定律?

例如,在Course类中

#course.rb
...
belongs_to :batch
...

它是一个Exam

#exam.rb
...
belongs_to :course

delegate :batch, to: :course
...
# access some batch's method like this

batch.name # which really is course.batch.name

是否违规?可能的解决方案是什么?

最佳答案

我认为授权(甚至是多级深度)并不违反 Law of Demeter ,因为您实际上并没有在两层之外的单元上调用该方法。

委托(delegate)改进了松散耦合的组件,因为您可以用方法替换单元中的委托(delegate)并更改其实现,而无需更改其他单元。

法律告诉你不要依赖外部对象的内部。可以访问它的值,但要通过适当的接口(interface)。该接口(interface)可能是 - 以其最简单的形式 - 委托(delegate)人。

关于ruby-on-rails - rails 的多级委托(delegate)是否违反得墨忒耳法则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36257966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com