【发布时间】:2013-07-26 05:28:57
【问题描述】:
我在新工作中开始与装饰师合作,我发现他们真的很有帮助。我正在为我们的一位装饰器编写规范,并想知道是否可以这样做...
设置(精简版):
我们有一个有两个孩子的主对象。
Main
/ \
A B
当 Main 被装饰时,我们也装饰 B,但我们必须将 A 作为上下文传递。 A 用于 B 的一些装饰器方法,但如上所述将 A 与 B 分开更符合逻辑。
# in MainDecorator
BDecorator.new(B, context: {a: A}) # all good
有时我们自己装饰 B(不通过 Main),而过去我们忘记将 A 作为上下文传递。我们总能抓住它,但一直打下去是个烦人的问题。
B.decorate # no context -> :(
问题:
是否可以验证 A 在 B 的装饰器中作为上下文传递?你能有一个装饰器验证器吗?
(我们考虑过让 A 成为 B 的子级,但这对我们的应用程序来说没有意义。我同意它会起作用,但这不是我们想要的。)
【问题讨论】: