3

有了 Pharo Smalltalk 中可用的 Announcements 框架,还有理由使用经典的 Smalltalk-80 依赖/更改/更新机制吗?

4

2 回答 2

5

主要区别在于公告是从事件的发布者传播到订阅者的第一类对象,而在旧的依赖机制中只发送一个符号。因此,一个真实的对象增加了很多灵活性,但保留了旧 pub/sub 方法的优雅和简单。

于 2013-03-27T18:31:30.430 回答
3

虽然基本原理相同,但 Announcements 框架更灵活,恕我直言更优雅。例如,您可以定义公告的层次结构并像处理异常一样处理它们。假设Ann2是 的子类Ann1,您可以:

anObject when: Ann1 do: [...]

该块将捕获两类公告。另一个很酷的事情是,您可以为一组通知定义一个处理程序,而不是一个通知。假设Ann3Ann4是公告,您可以:

anObject when: Ann3, Ann4 do: [...]

并且当任何这些公告被触发时,该块将被评估。最后,由于您的事件现在是对象,您可以将行为委托给它们,这非常好。Vassili Bykov有一组关于您可能会感兴趣的主题的帖子。

回到最初的问题:我能想到的唯一“缺点”是你必须去定义一个类,而不仅仅是使用一个符号。但老实说,与您从公告中获得的收益相比,这种努力是如此之低,以至于对我来说是轻而易举的事。我真的想不出任何理由不使用公告。

高温高压

于 2013-03-27T19:04:49.280 回答