【问题标题】:Is it easy to abuse the observer pattern?观察者模式容易被滥用吗?
【发布时间】:2011-10-27 20:31:37
【问题描述】:

我有一个项目,我第一次广泛使用观察者模式。不过我发现的一件事是,如果我检查这个项目中的一个典型对象,它往往会非常大,包含所有观察者和可观察对象,然后是观察者拥有其他观察者的时间等等。

这似乎是题外话,因为性能很好。但是我发现偶尔当我在调试器中时,如果我尝试打印一个实例变量,它会锁定我的机器,直到我终止进程。这让我担心代码在生产过程中可能会发生这种情况。或者这只是一个警告,我正在滥用该模式。

有什么提示、建议吗?

【问题讨论】:

  • 好吧,您应该只在需要时使用它,而不是为所有对象使用它,即使它们不需要通知更改/事件。
  • 也许我遇到的最大问题是,由于事件触发的非线性,调试我的代码变得更加困难。而且它锁定了我的调试器这一事实也无济于事。
  • @CloseVoters:这个问题有点笼统,但值得。

标签: ruby oop observer-pattern


【解决方案1】:

TL;DR:是的,但这并不意味着它有时并不完美。

“惊人的大”意味着……它非常大;那实际上是什么意思?有多少观察者/可观察者?它们嵌套得很深吗?

IMO 在调试器中做事与“现实生活”之间的相关性不是特别强; 是否它曾被锁定在生产或测试中?我更有可能认为这是调试过程/应用程序的产物。

“幽灵般的远距离动作”创建了必须理解的非局部性,以便正确推理代码和行为。这种发展需要积极培育;而不是说“我将创建一个新的观察者”,而是将其构建进去,并尽可能保持线性推理。

【讨论】:

    【解决方案2】:

    您可以重写 inspect 方法以减少冗长。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多