出于某种原因,生活中总会遇到一些知道一些事情但又不喜欢解释的人——所以我来到这里是希望了解 IRepository 模式是什么。
我有大约 1 年的编程经验,希望有人向像我这样的新手清楚地解释上述模式是如何工作的。
我收到了来自多个来源的混合消息,现在我开始对 *%&^$ 感到困惑。但是,我注意到,在提到 IRepository 模式时,经常会提到其他熟悉的术语,例如 Domain、Domain Objects、Domain Model、Application Services、Domain Services、Web Services ..
任何人都可以给出解释(不是很深入,但足以对每个组件的含义有足够的了解)...请分享您的经验!
最佳答案
存储库模式通常作为 domain driven design (DDD) 的一部分进行讨论。
为了切入正题,以下内容过于简化。
DDD 是一种用于构建应用程序的架构。在其中,开发人员将定义模拟业务需求的模型。例如,如果您正在构建一个电子商务应用程序,您将拥有一个产品模型和一个购物车模型(以及其他东西)。
在这种架构中,存储库负责持久化和检索模型。在我们网站的访问者将产品添加到他/她的购物车后,我们将构建购物车对象 var cart = new Cart(sessionId, productId, yada...)
然后调用 repository.Save(cart)
。
回答你的问题:IRepository
和更可能的 IRepository<T>
接口(interface)用于简化您的存储库。它们通常包含 Get(int id)
和 Save(object o)
之类的方法,无论您是保存产品还是购物车,这些方法都不会改变(请记住,所有信息都在模型中)。在这种类型的应用程序中,您将使用一个存储库来处理所有持久性,并且仅为非常特定的用途创建专门的存储库(例如 CartRepository
)。
DDD 的另一部分是应用程序不关心模型被持久化到哪里,只关心它们被持久化了。通过创建接口(interface),可以将应用程序配置为将对象持久保存到任何地方/任何地方,而无需更改代码。在我们的示例应用程序中,我们可以有 SQLServerRepository
、 OracleRepository
、 XmlRepository
和 MongoRepository
。只要他们实现了 IRepository 接口(interface),我们的购物车就能够将对象持久化(保存)到各种数据库或 XML 文件中。
关于c# - 存储库模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9535169/