我想实现工作区的概念。这是一个全局概念 - 所有其他代码都将与此 Workspace 的一个实例交互。工作区将负责维护当前系统状态(即与系统模型交互,保持系统状态等)
那么对于我的工作区来说,最好的设计策略是什么,记住这必须是可测试的(现在使用 RSpec,但很高兴看到替代方案)。
在阅读了一些开源项目之后,我看到了 3 种策略。我无法将其识别为“最佳实践”。
他们是:
- 包括
singleton
班级。但这有多可测试?Workspace 的全局状态会在测试之间发生变化吗? - 将所有行为实现为类方法。你又如何测试这个?
- 将所有行为实现为模块方法。完全不确定这个!
哪个最好?还是有其他方法?
谢谢,戈登
编辑
当我开始在我的所有代码中包含“单例”模块时,我意识到我的代码是多么紧密地耦合在一起,到处都引用了这些全局实例。
所以我已经开始完全删除它们,而是将引用传递给全局实例。但是现在我正在沿着 IOC 的路线前进——通过我的构造函数传递依赖关系。
这在 Ruby 中是个好主意吗?还是我错过了什么?
顺便说一句,您可能已经收集到我是 Ruby 的新手!