0

我担心的是,这不是为每个被认为是不好的做法的独特事件创建一个自己的课程吗?感觉这种方法并不复杂,如果我有几十个事件更是如此。尽管它是一个简单的解决方案(每种事件类型的唯一字段),但带有许多几乎空的类。

我宁愿有一个通用类和一个 @Subscribe-d 方法,我可以在其中检查发送的消息类型(使用枚举)然后采取相应措施,但这种方法需要我创建例如地图并将数据放入其中它然后每次我想发布一些东西时通过这张地图,这似乎也不是最好的方式。

你怎么看?

4

1 回答 1

1

在事件内部检查一种类型的事件在某种程度上违背了 Otto 和 OOP 的设计理念。如果事件是单独的,请将它们作为单独的类发布并以不同的方法订阅它们。

事件总线的想法是分离生产者和消费者。消费者中的事件类型检查增加了耦合并使代码效率降低且更难维护。

空类可以正常工作。您可以将相关的事件类组合在一起,例如作为静态内部类。

如果您只需要在应用中发布一个枚举值,例如广播状态变化,您可以在发布/订阅时使用枚举类型。那里不需要上课。

为了传递数据,您可以发布包含数据的对象。您不需要每次都创建新对象,只需就地更新数据并重新发布相同的对象。

一些开发人员发布“数据更改”事件,然后让消费者从生产者本身获取更新的数据。这再次引入了消费者和生产者之间的额外耦合,我会避免这种情况。

于 2014-10-04T11:53:24.690 回答