好的,所以我在我的應用程序中有幾個模塊。一個稱爲ProductCatalogue,另一個稱爲合同。我們現在需要將合同與許多產品相關聯(例如合同的一方可以訂購的產品)。在該器產品目錄模塊我們有具有以下功能我應該如何訪問另一個模塊的DAL?
Public Function GetProducts()
Set GetProducts = GenerateProductsList("SOME SQL")
End Function
Private Function GenerateProductsList(selectQuery)
Dim list : Set list = New List
Dim results : results = GetResultsFromDB(selectQuery)
'... for each row
Dim product : Set product = New Product
product.Id = results(field, index)
list.Add(product)
'loop ...
Set GenerateProductsList = list
End Function
現在,我想與合同相關的所有產品ProductDAL類,所以我想寫一個看起來像這樣
Public Function GetProductsForContract(contractId)
Set GetProductsForContract = GenerateProductsList("SOME SQL")
End Function
功能
我的問題是,我應該在哪裏放置這個功能?我想使用現有的GenerateProductsList()函數,因爲它比看起來複雜得多。我的問題是「我應該把GetProductsForContract放在哪裏」?
我的選擇:
1)把它放在ProductDAL。
這樣做的問題是ProductDAL突然意識到合同是什麼,我可以看到它快速充滿了諸如GetProductsForAllContracts,GetProductsForLiveContracts等的功能(以及其他模塊想要訪問產品時的更多功能)我想保留這些函數與其餘的合同代碼。
2)把它放在ContractDAL中並使ProductDAL.GenerateProductsList公開。
我真的應該公開這個嗎?
3)創建一個新的類,其中一個方法是唯一負責接收SQL數據集並返回產品列表的方法。
其實這不是和2一樣嗎?
4)停止做錯了。
我不知道如何。給我看看。然後抱着我。
編輯:另外,AddProductToContract,RemoveProductFromContract怎麼辦呢?我傾向於新的ContractProductManager類,但訪問GenerateProductsList()的最佳方式是什麼?
感謝您的回答。我只有一個數據庫,但應用程序是巨大的,這就是爲什麼各個部分(產品,合同,聯繫人,文檔等)有不同的DAL。 – jammus 2009-06-03 15:32:52