我必须重构一个复杂的C#应用程序(许多对话框,混合逻辑等等)。
其中包括与专用硬件设备的通信管理(通过异步c#回调发送命令和接收数据)。代码是带有混合UI/Logic/Communication/etc的“意大利面”,我的任务是在DDD的意义上分割这些层。
那么,哪一层属于回调驱动程序呢?
回调在系统中创建了“气泡”,直到UI层,因此我不能执行这样的基本原则,即一个层的任何元素只依赖于同一层中的其他元素,或者依赖于“在”层下的层元素。
发布于 2012-08-30 17:04:45
您可能想看看事件聚合器模式。一方面,您将拥有与硬件接口的代码。当消息来自硬件时,您应该将其发布到事件聚合器(或者可能将其转换为内部事件类型并发布它)。对该信息感兴趣的任何其他组件都可以订阅该信息,并在通过该信息时接收它。这种模式将与硬件接口的代码与系统的其他部分分离开来。
发布于 2012-08-30 14:34:45
对于发送异步事件的特殊硬件,您并不像您想象的那样缺乏经验。它完美地描述了鼠标或键盘。就用同样的模式。在驱动程序层中,有某种registerListener方法,并为其他类创建一个接口,以实现接收事件。
https://softwareengineering.stackexchange.com/questions/162991
复制相似问题