-1
我有一些类,只要在类中发生变化就调用观察者。如果观察者具有隐式序列依赖性会怎么样?
观察员的一些例子:
- 如果在实例的值改变,旧版本的实例的完整副本并储存在撤消堆栈
- 如果在一个值实例更改,还需要更新其他一些值
观察者被存储在类本身或存储在存储特定类的所有实例的池中。
问题在于应该调用观察者的顺序变得重要。在这种情况下,应该在其他观察者之前调用在撤消堆栈上放置副本的观察者。否则,撤销堆栈包含不正确的“先前信息”。
我看到几个方法来解决这个问题,但没有干净的:
- 我可以提供撤销逻辑特定的观察者接口(但为什么我的类需要知道的关于撤销-观察者?)
- 我可以要求观察员有优先号码,这样他们就可以表明自己的优先级
- 我可以添加观察员的多个级别(但观察家怎么能知道它们的优先级是相对于其他观察员什么?):1级,等级2 ......(但是,观察员怎么知道他应该在哪个级别注册自己?)
- 我可以观察者之间添加依赖(但我怎么能肯定,观察员知道所有其他相关的观察者?)
所以:问题:你会怎么做,如果观察者需要在已知序列被调用,而不在模块之间引入不需要的依赖关系或引入不清洁的概念?