2008-12-29 38 views
2

我想在存儲圖片的實例中使用存儲庫模式。有多少類型應該實現Repository模式?

我所做的是將實際圖片保存在磁盤上的目錄中,但保存有關圖片的數據以及圖片與數據庫中的哪些對象配合使用。我想知道是否應該使用2個接口來存儲,如IStorePicRepoIStorePicDataRepo或者有1個接口並在1個類中實現它。聽起來對我來說,它不應該由同一個班級來實施,因爲我們正在處理2種不同的存儲機制。

有什麼想法?

回答

1

我對存儲庫模式知之甚少,但我不會在我的標識符名稱中將Repository縮寫爲Repo。 Abbrs。迷惑我。

2

這裏沒有銀彈。

但我最終可能會與下面的設計:

IBinaryDataService: 對於數據的二進制格式的一般儲蓄。要保存的對象必須有一個方法來幫助將其寫入OutputStream。應該有一個方便的方法將它加載到原始對象中。

IDataIndexService: 對於數據屬性/標籤的索引,以幫助搜索以及。密切關注你所描述的圖片的數據。

IPicRepo: 只有暴露給客戶端的接口。客戶應該使用這個,永遠不知道上述兩項服務。

FileSystemBinaryDataServiceImpl: 上面的IBinaryDataService的實現。

DbDataIndexServiceImpl: 上面的IDataIndexService的實現。

PicRepoImpl: 上面執行IPicRepo。使用spring將FileSystemBinaryDataServiceImpl和DbDataIndexServiceImpl作爲依賴注入。

如果你希望其他擴展名:

IPersistentModel: 表示可以堅持的一個對象。有方法寫(OutputStream),讀(inputStream)和getAttributes():地圖

PicModel: 上面的IPersistentModel的實現。

PS。這只是一般性的高層次概述。