2009-06-03 30 views
0

好的,所以我在我的應用程序中有幾個模塊。一個稱爲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()的最佳方式是什麼?

回答

1

如果不瞭解更多關於您的應用的信息,這很難回答。 我會說,如果產品和合同在同一個數據庫中並且一直是,那麼有2個DAL似乎是任意分離的。由於您可能在數據庫中的產品和合同之間存在關係,因此您無法分離DAL中的兩者。你可以把這個新的方法放到任何一個類,恕我直言。

+0

感謝您的回答。我只有一個數據庫,但應用程序是巨大的,這就是爲什麼各個部分(產品,合同,聯繫人,文檔等)有不同的DAL。 – jammus 2009-06-03 15:32:52

相關問題