引發這個問題的代碼是我公司代碼庫中的一個服務,它包含四個不同的DAO。直到我看到該服務已經與屬於完全不同的服務的方法混爲一談時,我纔想到這一點。在這個服務中創建這些無端的方法的原因僅僅是因爲所需的DAO是這個服務類的私有成員。服務和DAO之間的關係應該是一對一還是一對多?
這位開發人員是否違規,或者在大多數情況下每個服務級別擁有多個DAO都是錯誤的?
注意:我注意到每個Service類有多個DAO似乎是合理的,只要它們都包含在同一個數據庫中。但是,從多個數據庫中獲取DAO似乎可能會導致問題。
它的確如此。在我的情況下,我認爲我正在處理開發人員的不當行爲,在這種情況下,人們根據其DAO字段將內容推送到Service中,而不是基於服務的意圖。 – stevebot 2011-01-25 01:58:04
啊,遺傳和亞型多態性的問題...所有這一切,不錯的軼事;-) – 2011-01-25 01:59:43
在我看來,一個服務提供了一組特定的服務來處理一些用戶操作。這些服務可能會也可能不會使用DAO來完成這項工作。另一方面,DAO提供Service和數據庫之間的通信,但它不應該知道用戶請求的全部內容。如果開發人員將這兩者混合在一起,那麼我沒有看到具有服務和DAO的一點,因爲您可以將它們組合在一起,這非常糟糕,因爲您無法重新使用大量代碼。 :) – limc 2011-01-25 02:08:24