代码之家  ›  专栏  ›  技术社区  ›  CSharpAtl

应该有多少类型实现存储库模式?

  •  2
  • CSharpAtl  · 技术社区  · 16 年前

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

    我要做的是将实际的图片保存在磁盘上的一个目录中,但是保存关于图片的数据,以及哪些图片与数据库中的哪个对象一起保存。我想知道是否应该使用两个接口来存储,比如 IStorePicRepo IStorePicDataRepo 或者有一个接口并在一个类中实现它。在我看来,它不应该由同一个类实现,因为我们处理的是两种不同的存储机制。

    有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  2
  •   Kent Lai    16 年前

    这里没有银弹。

    但我可能最终会采用以下设计:

    IBinaryData服务: 用于将数据一般保存为二进制格式。要保存的对象必须有一个方法来帮助将其写入outputstream。也应该有一个方便的方法将它加载到原始对象中。

    IDataIndex服务: 对于数据属性/标记的索引,也有助于搜索。与你所描述的图片数据非常吻合。

    IPicRepo: 仅向客户端公开接口。客户应该使用这个,永远不知道上面两个服务。

    文件系统二进制数据服务模板: 上述ibinarydataservice的实现。

    DbDataIndexServiceImpl: 上述IDataIndexService的实现。

    PicRepoImpl: 实施上述IPICREPO。使用spring将fileSystemBinaryDataServiceImpl和dbDataIndexServiceImpl作为依赖项注入。

    其他扩展(如果您愿意):

    Ipersistent型号: 可以持久化的对象的表示。具有方法write(outputstream)、read(inputstream)和getattributes():map

    PicModel: 上述ipersistentmodel的实现。

    附:这只是一个总体的高层概述。

        2
  •  1
  •   Jay Bazuzi Buck Hodges    16 年前

    我对存储库模式了解不多,但我不会在标识符名称中将存储库缩写为repo。Abbrs。把我弄糊涂了。