我正在構建一個包含多個Connector
類的應用程序,這些類與不同的數據孤島交互。例如,請參閱我的早期問題here。無論如何,就像我的例子一樣,幾乎所有這些數據源在訪問時都是昂貴的,因此每個Connector
都維護一個緩存來限制訪問。對於每個數據筒倉,都有一個提取數據的IDataSource
,以及一個緩存的Connector
。 Connector
是通過在我的AppFactory
類中傳遞IDataSource
到工廠方法來訪問的。這是否違反了概念完整性?
不幸的是,正是1 Connector
不適合這種模式。活動目錄筒倉速度足夠快,不需要緩存,所以不需要ActiveDirectoryConnector
,我的AppFactory
類也不會有工廠方法。正如我之前所說的,在其他任何情況下,都會從Connector
對象請求數據,只能通過IDataSource
參數從方法調用獲得AppFactory
。
據我所知,我的選擇是有一個淺ActiveDirectoryConnector
對象,只是將請求直接轉發到它的IActiveDirectoryDataSource
,或根本沒有ActiveDirectoryConnector
。在前一種情況下,我保持概念完整性與我的其餘部分Connector
s,但我有一個無用的間接水平。在後者中,我犧牲了直接性的概念完整性。哪一個是較小的邪惡?
從某種意義上說,它只是簡單的情況:零大小的緩存。 – 2010-08-05 20:46:20
我真的很喜歡類似於訪問器方法。 ActiveDirectorConnector與公衆類型名稱{get; set;}類似,它驗證了它的存在。 – DonaldRay 2010-08-06 16:55:25