我正在设计一个实体/组件系统,其中通过事件消息系统解决实体内通信的问题。组件分为两部分,一个在实体中,一个在子系统中的“实体代理”,通过观察者类型系统保持同步。我正在尝试使用事件和委托来实现。
我正在尝试对我的应用程序事件/消息传递系统的结构进行建模,但我遇到了代表问题。现在的方式是一个图表(附加),显示了系统中的委托、eventArgs 和实体,但是它们的关系的性质仅表示为通用关联。我还有第二张图显示了系统的接口。我需要展示这些对象中引发的事件,因为这是系统中最复杂的地方。
我知道我也需要动态协作和时序图,但我正试图弄清楚我需要什么样的事件支持类和多少个不同的事件支持类,以及继承结构会是什么样子。我想给自己一个我知道可以协同工作的消息类型的选择。我想我可以从这些预定义类型中选择一个 EventArgs 派生和一个委托类型,以便在动态图表和组件构建时重用。
我无法弄清楚的主要事情是将事件建模为属性还是操作。我一直在尝试为委托使用关联类,并使用带有事件构造型的 OnSomeEvent() 类型操作。我不喜欢这样,因为事件不是操作。我已经在代码中使用此 On****() 命名约定保护了方法。这种方法并没有真正捕获委托签名、多播行为和观察者模式。
其他人使用什么方法来表达这些复杂且紧密耦合的类?对我来说,图表的重点是记录和更全面地理解系统中的接口。在我的流程的这个阶段,我希望冻结接口并继续实现组件本身。