2008-12-29 16 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。这只是一般性的高层次概述。