我在看Coursera中的Reactive Programming课程,它使用Scala实现Observer模式.在那里,Martin Odersky说观察者模式迫使命令式编程,我们可以看到,因为订阅者的处理程序有Unit
类型.
他在这里说:https: //class.coursera.org/reactive-002/lecture/107 9:40
我真的不明白:
1.为什么处理者需要有Unit
类型?
2. Observer模式如何强制命令式编程?
我没有评论发布的视频,所以我的答案基于OP的原始问题.
根据模式的定义,处理程序是回调; 因此,它们具有Unit
返回类型,因为它们描述了将响应通知而执行的某些行为.这是副作用的定义.
因此,观察者模式是一种本质上命令式的模式:函数的调用者(例如notifyObservers(观察者))并不关心函数本身的结果,但它依赖于它将具有的副作用.这是必要的编程.
作为旁注,作为Unit
结果类型的事实并非绝对必要,但如前所述,传达除了副作用之外没有任何兴趣.有人可能会对该方法进行一般建模并返回一些更有意义的类型,但由于观察者模式在实践中的使用方式,这可能会被忽略......