我有一个对象:图书馆
一个图书馆可以拥有多本书籍、CD 和论文。除了具有 Address 属性的 Library 类之外,每个类都有 Id、Name 和 Price 属性。
我想创建存储库模式来抽象数据从上面的层存储的位置。现在,数据存储在 xml 文件中。
<library>
<books></books>
<cds></cds>
<papers></papers
</library>
稍后我们正在考虑将其存储在数据库中。然后我们将有一个图书馆桌、一个书桌、一个 cd 桌和一个文件桌。
用户在屏幕上创建一个图书馆对象,然后在屏幕上创建书籍、CD 和论文。
然后他点击保存。那时,我想获取新创建的库对象并将其保存在 XML 中,因此我想要存储库并使用依赖注入,我将在上面的层中注入 xml 存储库的实现,以便将数据存储到正确的位置。我可以序列化库对象并获取 xml 并调用简单的 Save 方法来保存库对象。
但想象一下,我将 XMLRepository 替换为 DatabaseRepository。
在这种情况下,我希望上面的其余层保持不变。我希望 LibraryRepository.Save() 会照顾它是否需要进入 XML、CSV 或 DB。我很困惑如何创建存储库模式来解决 LibraryRepository.Save() 方法。
世界各地的每个人都说 Repository 类应该有一个单一的职责。它应该只保存一种对象类型,不应该获取一个对象,获取它的相关类并保存它们。每个类都应该有自己的 Repository 类。
每个库对象也有多个 Books 对象。我不想使用 for 循环并浏览 LibraryRepository.Save 方法中的每本书。
我不确定我应该如何创建我的域模型并调用 Library Save() 方法。
请指导。