我不會回答您的第一個問題,因爲無法以當前的形式合理地回答您的問題。
我的第二個問題的理解:
首先,讓我試着去了解你的服務器體系結構的基本佈局:
+--------+ 1 1..n +--------+ 1 1..n +---------+
| Server |<>------------| Module |<>-----------| Project |
+--------+ +--------+ +---------+
「有一臺服務器,其中有或由1個或多個模塊,每個模塊都有幾個項目或由幾個項目組成。「我直接從你的問題中解決了這個問題我在這裏不理解的第一件事是,我們是在討論運行時組件,還是關於源代碼解決方案的佈局?
更具體地說,你似乎有模塊,項目和類層次結構:
Server
|
+---- Accounting (module)
| ¦
| ? (projects)
|
+---- Offer (module)
¦ |
? +---- Action (project)
|
+---- Message (project)
|
+---- Entity (project)
|
+---- Query (project)
|
+---- ProductQuery (class)
|
+---- CustomerQuery (class)
¦
?
如果我理解正確的話,你現在要收集來自例如,全「遠程」的查詢方法ProductQuery
和CustomerQuery
內部共同OfferQuery
類...這是正確的嗎?
對第二個問題的解決方案建議中的指示:
。現在,因爲你沒有提供有關您所使用的技術和框架的細節,我還就呆在有些模糊:
我認爲你想要做的不是一個好方法。爲什麼?因爲你打算把完全不相關的東西放到一個類中,這是基於他們都是「查詢」方法的想法。但他們查詢的是非常不同的東西: Offers
,Products
,Customers
。這不是一個好的面向對象的設計,因爲它不是「面向領域」的。它是面向查詢的。
我認爲你會很好地開發一個乾淨的對象(域)模型。圍繞系統中的邏輯實體設計類(例如,已經提及的優惠,產品,帳戶,客戶等)。保持相應的類完全不含查詢方法。
現在,查詢的位置在哪裏?您可以查看此任務的對象關係模型映射器(OR/M)。 Hibernate(或.NET,NHibernate)或Microsoft的.NET實體框架都是很好的選擇。他們會將您的域模型映射到關係數據庫,併爲您完成所有在數據庫中的創建,查詢,更新和刪除。
關於你的第一個問題,你太過於無法得到合理的答案。我們需要知道你的服務器組件使用什麼框架,以及典型的具體查詢是什麼樣的。請提供更多細節。 – stakx 2011-01-23 10:46:44