我正在尝试了解 Ruby/Rails 中的依赖注入(inject)。如何使用依赖注入(inject)删除 Builder
对 Saw
的显式引用?
class Builder
attr_reader :saw
def saw
@saw ||= Saw.new(4)
end
def cut_wood
Saw.saw
end
end
class Saw
attr_reader :blades
def initialize(blades)
@blades = blades
end
def saw
# do something
end
end
最佳答案
将 Saw
的初始化移动到默认参数。
class Builder
def saw(saw = Saw.new(4))
@saw = saw
end
def cut_wood
Saw.saw
end
end
Builder#saw
现在支持依赖注入(inject)。
请记住从您的代码中删除 attr_reader :saw
,因为它已被您的自定义阅读器覆盖。
关于ruby-on-rails - Ruby/Rails 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18310940/