假设有一个模块 A 使得模块 B 和 C 依赖于它。模块 A 支持侦听器模式,即 B 和 C 等模块可以侦听 A 生成的事件。因此,模块 A 与其侦听器分离。现在我们想要一些可以共同定义模块 A 的合约的合约(Java 中的接口)。
问题是在合约中插入监听器。我应该在合同中添加“public addListener(Listener listener)”之类的功能吗?另一种方法是使用实现侦听器部分的抽象类并将其他功能保留为抽象。我真的不想扩展类,因为在某个时候,如果我们决定在一个类中实现两个合同,那么这是不可能的。您能否讨论上述案例,并感谢您对相关主题的任何见解。
为什么我想要合同中的听众?这是因为如果有一天有人重写模块 A,听 A 的模块不应该分解。如果这不是一个好主意,请告诉我。
编辑:问题之一是我想让监听器/事件成为合同的一部分,以便可以轻松地完成未来的更改/重新实现。模块 A 早些时候触发了特定事件 E 不应该发生,但现在新的实现将其变为事件 B,因为程序员不知道事件(因为它不是合同的一部分)。这种方法的一个问题是我强迫程序员触发这些事件并使用基于事件的系统。