2011-10-30 46 views
2

我有一個類A(調度程序),負責處理接收到的數據的通信和解析,並將其傳遞給B類(應用程序的業務邏輯)。兩個類之間的關係

B類和A類應互相呼叫,因爲通信是雙向的: 從業務邏輯層發送數據並接收數據作爲響應。

任何有關可用於促進A類和B類之間通信的最佳設計的建議。我不認爲他們應該指向對方。

回答

1

如果這是一個長時間運行的操作,您可以考慮將這些操作作爲BeginOperation()EndOperation()方法對使用,使用回調或其他異步模式(檢查Asynchronous Programming Design Patterns)。

我也想避免循環引用。我會以類似於WCF Duplex服務的方式來實現它。在項目B中創建您的業務類B和接口,該接口代表其他項目需要實現以從B回調的合同,我們稱它爲IBCallbackContract。所以,你需要:

  1. 創建B類
  2. 創建IBCallbackContract
  3. 創建Initialize(IBCallbackContract)方法,這將需要回調對象
  4. 創建A級,這使得使用BL類
  5. 實現IBCallbackContract在項目A,我們稱它爲BLCallback
  6. 在A啓動時,創建一個實例BLCallback
  7. 呼叫Initialize方法B的,它發送的BLCallback
+0

當我從通信(A類)中得到一些東西的時候,我需要的路徑是BL(B類)。但有時BL需要發送數據給A類,而不是與某些調用相關,只是將它發送給溝通水平。 –

+0

然後你沒有太多的選擇。要麼通過共享項目中的代理來創建回調,要麼具有間接循環引用。我個人會去回調,因爲當我想到這樣的項目可能會變得混亂時,循環引用會讓我害怕。我在回答中編輯了我的建議。 –

1

一個簡單的解決方案的情況下是使用B類上的方法和接收B類使用事件數據發送信息當您啓動,A級訂閱參加活動,雙向溝通現在就可以發揮作用。