zoukankan      html  css  js  c++  java
  • Repository模式

    在Nopcommerce 2.8 的数据访问中使用了Repository这种模式。在百度上google了一下,发现这个模式在asp.net mvc里广泛使用着。
    找了这么一段很精辟不过又看的不大懂的介绍:
     它是衔接数据映射层和域之间的一个纽带,作用相当于一个在内存中的域对象集合。客户端对象把查询的一些实体进行组合,并把它 们提交给Repository。对象能够从Repository中移除或者添加,就好比这些对象在一个Collection对象上就行数据操作,同时映射 层的代码会对应的从数据库中取出相应的数据。从概念上讲,Repository是把一个数据存储区的数据给封装成对象的集合并提供了对这些集合的操作

      我的理解是:

    借助于泛型,封装了基本的增删改查,消灭了很多重复的代码。

    比如有一个Customer表和一个Order表:

    1 public class Customer{
    2      public int Id{get;set;}
    3      public string Name{get;set;}
    4 }
    5 public class Order{
    6     public int Id{get;set;}
    7 }

    对应的Repository是:

     

     1 public interface ICustomerRepository{
     2      Customer GetById(int id);
     3      void AddCustomer(Customer cust);
     4      void Delete(int id);
     5       void Update(Customer cust);
     6       void QueryAll();
     7 }
     8 
     9 public interface IOrderRepository{
    10      Order  GetById(int id);
    11      void AddOrder(Order item);
    12      void Delete(int id);
    13       void Update(Order item);
    14       void QueryAll();
    15 }

    于是我们发现了重复的代码,借助于泛型,Repository模式:

    public interface IRepository{
    T GetById(int id);
    void Add(T item);
    //省略代码
    }

    NopCommerce 2.8 中也是类似的结构:

    在图中,IRepository定义增删改查,EfRespository去实现他们。

      

  • 相关阅读:
    CVSps 3.8 发布,CVS 资料库更改收集
    Cobra WinLDTP 3.0 发布,GUI 自动化测试
    SolusOS 2 Alpha 6 发布,桌面 Linux 发行
    微软 Windows Phone 8 原创应用大赛起航
    JAVA削足适履适应RESTful设计
    如何撰写编程书籍
    Synbak 2.1 发布,系统备份工具
    LibreOffice 4.0 RC1 发布,支持火狐兼容主题
    Rails 3.2.11 发布,修复关键安全问题
    haveged 1.7 发布,随机数生成器
  • 原文地址:https://www.cnblogs.com/xinchuang/p/3121278.html
Copyright © 2011-2022 走看看