2009-04-22 98 views
4

我目前有一個項目是「業務對象」項目,我們的目標是在GUI和業務對象之間有明確的分離。但是,我的項目有System.Windows.Forms的參考,這對我的項目設計不佳的每個人來說都是一個大紅旗。如何讓'GUI'層保留'業務邏輯'層?

我的問題是,我正在使用稱爲「活動查詢生成器」的第三方控件。這實際上是一個'控制',如在GUI中,System.Windows.Forms.Control;但它永遠不會顯示在任何地方,並添加到任何窗體控件集合中。它提供了業務對象的許多核心功能。

無論如何,沒有引用System.Windows.Forms - 我不能使用第三方控件和BO是可怕的破碎。但我被告知我不能引用System.Windows.Forms,因爲它是不好的編碼習慣。

而我完全喪失了做什麼。

具有更多設計模式類型體驗的人可以提供解決方案嗎?

回答

6

因此,您有一個引用WindowsForms的庫,但不直接使用任何東西?你的BO項目沒有搞亂任何形式?

我認爲你很好,那麼參考是一個紅旗,說等待爲什麼我這樣做。但只要該層仍然邏輯分離,那麼恕我直之,你的確定。

你可以做的一件事是將這個抽象出來,以處理與查詢生成器交互的另一個項目。因此,您的BO項目將與知道如何使用此控件的查詢生成器項目一起工作。

+0

這很有道理 - 謝謝。如果你知道的話, – 2009-04-22 15:34:25

+0

很想聽聽我爲什麼得到-1。我很想聽聽你的意見。 – JoshBerke 2009-04-22 16:10:48

3

我在這裏可能是錯的,但System.Windows.Forms只是.NET框架的一部分,實際上並不構成GUI。它可能有許多有用的功能,你可能會利用它們不顯示任何東西。我認爲無論誰說這不應該被使用可能會誤解這個原則。

如果您正在開發一個n層應用程序,那麼操作GUI-Business Logic-Data Store是很常見的,但GUI僅限於提供給用戶允許交互的用戶界面,而不是促進它的框架。

2

我只是模糊地熟悉Active Query Builder,但是不是用於創建SQL查詢的GUI組件嗎?我不知道這種組件屬於商業對象。

+0

我對它並不熟悉,但如果它允許在設計時構建查詢,然後需要該組件在運行時執行,那麼它包含在內並且它使用表單是有意義的。 – Lazarus 2009-04-22 15:35:18

+0

除了GUI控件,它提供了生成SQL的能力,並且通常會做一些非常酷的事情。從本質上講,我有一堆「標準」,並希望返回匹配的數據或獲得這些匹配所需的SQL。AQB控制是其核心 - 但我們已經建立了相當多的目標,並希望其他BO利用該功能。 – 2009-04-22 15:51:09

+0

(我不確定這是否證明它是在BO中 - 也許它不應該在那裏) – 2009-04-22 15:51:47

1

您可以爲控件創建一個包裝類,該類使用您需要的方法實現接口。您的業​​務對象可以依賴於該接口,可以由任何東西實現(在這種情況下,它是一個控件)。

它確實引起一些擔心,即這個「控件」具有與UI無關的功能;它只是感覺不對。