两个班级之间的关系

时间:2011-10-30 11:13:22

标签: .net design-patterns architecture

我有一个A类(调度程序),负责处理接收数据的通信和解析,并将其传递给B类(应用程序的业务逻辑)。

B类和A类应该互相呼叫,因为通信是双向的: 从业务逻辑层发送数据并接收数据作为响应。

有关最佳设计的任何建议,可用于促进A类和B类之间的通信。我不认为它们应该只是指向对方。

2 个答案:

答案 0 :(得分:1)

如果这是一个长时间运行的操作,您可以考虑将这些操作实现为BeginOperation()EndOperation()方法对,使用回调或其他一些异步模式(检查Asynchronous Programming Design Patterns)。< / p>

我也避免使用循环引用。我将以与WCF Duplex服务类似的方式实现此功能。在项目B中创建业务类B,并且接口代表其他项目需要实现的合同以便从B调用,我们称之为IBCallbackContract。所以你需要:

  1. 创建B类
  2. 创建IBCallbackContract
  3. 创建将采用回调对象的Initialize(IBCallbackContract)方法
  4. 创建使用BL class
  5. 的A类
  6. 在项目A中实施IBCallbackContract,我们称之为BLCallback
  7. 启动A时,创建BLCallback
  8. 的实例
  9. 调用B的Initialize方法,向其发送BLCallback
  10. 的实例

答案 1 :(得分:1)

一个简单的解决方案是使用B类方法发送信息,并使用B类事件接收数据。当您开始时,A类订阅该事件,双向通信现在将起作用。