我正在设计一个实体/组件系统,其中针对实体内部通信问题采用了事件消息系统。将组件分为两个部分,一个在实体中,另一个是在子系统中的"实体代理",通过观察者类型系统保持同步。我正在尝试使用事件和委托来实现这个系统。
我试图模拟应用程序的事件/消息系统的结构,但是我在委托上遇到了困难。目前的方式是一个显示委托、事件参数和系统中的实体的图表(见附图),但它们之间的关系的本质只被表示为一般关联。我还有第二个图表显示系统的接口。我需要展示这些对象中引发的事件,因为这是系统中大部分复杂性所在。
我知道我还需要动态协作和时序图,但我正试图弄清楚需要多少不同的事件支持类以及继承结构会是什么样子。我想给自己提供一个已知可以配合使用的消息类型选择。我认为,然后我就可以从这些预定义类型中选择EventArgs衍生类型和委托类型,在动态图形和组件构建时间重复使用。
我无法找出的主要问题是将事件建模为属性或操作。我一直在尝试使用委托的关联类和一个带有事件原型的OnSomeEvent()类型操作。我不喜欢这个方法,因为事件不是一个操作。我在代码中已经有了这个On****() 命名约定的受保护方法。这种方法并没有真正捕获委托签名、多播行为和观察者模式。
其他人使用哪种方法来表达这些复杂而紧密耦合的类?对我来说,图表的目的是记录和更完整地理解系统中的接口。在我的设计过程中,我希望冻结接口并继续实现组件本身。
我试图模拟应用程序的事件/消息系统的结构,但是我在委托上遇到了困难。目前的方式是一个显示委托、事件参数和系统中的实体的图表(见附图),但它们之间的关系的本质只被表示为一般关联。我还有第二个图表显示系统的接口。我需要展示这些对象中引发的事件,因为这是系统中大部分复杂性所在。
我知道我还需要动态协作和时序图,但我正试图弄清楚需要多少不同的事件支持类以及继承结构会是什么样子。我想给自己提供一个已知可以配合使用的消息类型选择。我认为,然后我就可以从这些预定义类型中选择EventArgs衍生类型和委托类型,在动态图形和组件构建时间重复使用。
我无法找出的主要问题是将事件建模为属性或操作。我一直在尝试使用委托的关联类和一个带有事件原型的OnSomeEvent()类型操作。我不喜欢这个方法,因为事件不是一个操作。我在代码中已经有了这个On****() 命名约定的受保护方法。这种方法并没有真正捕获委托签名、多播行为和观察者模式。
其他人使用哪种方法来表达这些复杂而紧密耦合的类?对我来说,图表的目的是记录和更完整地理解系统中的接口。在我的设计过程中,我希望冻结接口并继续实现组件本身。