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