代码之家  ›  专栏  ›  技术社区  ›  Jack Ryan

存储库模式-基于类型查找存储库

  •  1
  • Jack Ryan  · 技术社区  · 16 年前

    我目前正在开发的应用程序大量使用NHibernate的存储库模式。我们有一个实现标准获取和保存的通用基本存储库类。然后,每个类型的存储库都会继承这个类。然后,这些存储库可以添加自己的特定于类型的方法(如果需要,还可以覆盖保存和获取)。

    这很好地工作,从关注点分离的角度来看,这意味着我们的业务对象是POCO的,我们的存储库类处理保存的细节。实际上,当我们有一个类型能够说“让我得到可以保存这个类型的存储库”时,它将非常有用。有什么模式可以用来做这个?我需要维护自己的查阅表格吗?查找表是否可以自动维护?

    2 回复  |  直到 16 年前
        1
  •  6
  •   kÍ©eÍ£mÍ®pÍ¥ Í©    16 年前

    看起来您准备好了依赖注入框架

        2
  •  0
  •   REA_ANDREW    16 年前

    使用反射和一些命名约定,例如:

    域对象名称存储库

    您可以使用activator.createInstance动态实例化要查找的存储库。只要您知道如何使用上面的示例命名它们。另外,您还具有注册表模式。例如,在web.config文件中创建一个mapping元素,然后在注册表中可以有一个名为resolvepository的方法。

    Registry.ResolveRepositoryFor<T>() where T:DomainObject;
    

    另外一个好处是,您可以使用IOC,使用示例Unity来反转控制。

    映射文件会将DomainObject映射到存储库,然后在注册表方法中,它可以使用Unity解析特定存储库的实例,例如将它们作为单例实例。

    安得烈