我正在尝试在存储图片的实例中使用存储库模式。
我所做的是将实际图片保存在磁盘上的目录中,但保存有关图片的数据以及图片与数据库中的对象相关的图片。我想知道是否应该使用2个接口进行存储,例如IStorePicRepo
和IStorePicDataRepo
或者有1个接口并在1个类中实现它。听起来像它不应该由同一个类实现,因为我们正在处理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。让我困惑。