应该有多少类型实现Repository模式?

时间:2008-12-29 06:00:56

标签: design-patterns oop repository-pattern

我正在尝试在存储图片的实例中使用存储库模式。

我所做的是将实际图片保存在磁盘上的目录中,但保存有关图片的数据以及图片与数据库中的对象相关的图片。我想知道是否应该使用2个接口进行存储,例如IStorePicRepoIStorePicDataRepo或者有1个接口并在1个类中实现它。听起来像它不应该由同一个类实现,因为我们正在处理2种不同的存储机制。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这里没有银弹。

但我最终可能会得到以下设计:

IBinaryDataService: 用于一般将数据保存为二进制格式。要保存的对象必须有一个方法来帮助将其写入OutputStream。应该有一种方法可以将它加载到原始对象中。

IDataIndexService: 对于数据属性/标签的索引,也有助于搜索。与您描述的pic数据密切对应。

IPicRepo: 只有暴露给客户端的接口。客户应该使用它,并且永远不会知道上述两种服务。

FileSystemBinaryDataServiceImpl: 上面的IBinaryDataService的实现。

DbDataIndexServiceImpl: 上面的IDataIndexService的实现。

PicRepoImpl: 上面实施的IPicRepo。使用spring将FileSystemBinaryDataServiceImpl和DbDataIndexServiceImpl作为依赖项注入。

如果您愿意,可以使用其他附加信息:

IPersistentModel: 表示可以持久化的对象。方法是write(OutputStream),read(inputStream)和getAttributes():Map

PicModel: 上面的IPersistentModel的实现。

PS。这只是一般性的高级概述。

答案 1 :(得分:1)

我对Repository模式知之甚少,但我不会将Repository缩写为我的标识符名称中的Repo。 Abbrs。让我困惑。