想象一下,我有一个对象系统,它们是事件发射器,也可以监听其他对象中的事件。在这个系统中,这些对象主要使用事件在它们之间进行通信。
我想遵循良好的面向对象实践,并且对为我的对象创建抽象感兴趣。我将使用的实际语言并不重要:例如,这些抽象可以是接口或抽象类。
这些抽象定义对象中的方法和属性,但不定义事件名称。新的实现可能会决定抛出全新的事件......确实,您总是使用相同的方法来抛出它们,但是如果您正在创建新的事件名称,我的印象是您在某种程度上违反了开放/封闭原则:我会说这相当于添加新方法。
是否有一种方法可以在该对象遵循的抽象中说明此类对象可以发出的可能事件?
我对这在 Java、C++、Javascript 和 Typescript 等语言中的工作方式很感兴趣。我不完全确定,因为我不了解 C#,但我认为在那种语言中,事件可以成为接口的一部分。但我感兴趣的是,您将如何使事件成为那些不以直接方式支持的其他语言的抽象的一部分。