[c#] ما هو IRepository وما الذي يتم استخدامه؟


1 Answers

IRepository عبارة عن واجهة تحددها عندما تريد تطبيق نمط مستودع التخزين. كما ذكرBrian Ball ، إنه ليس جزءًا من .NET. إنه واجهة تقوم بإنشائها.

يوصي المطورون الذين يستخدمون نمط مستودع التخزين على نطاق واسع باستخدام واجهة للتنفيذ. على سبيل المثال ، في التطبيق الذي أقوم بتطويره الآن ، لدي 5 مستودعات. 4 محددة و 1 عام. يرث كل واحد من IRepository مما يضمن أنني لن تواجه مشكلات في الطريق مع وجود اختلافات في عمليات التنفيذ.

بقدر ما أمثلة التعليمات البرمجية ، سأحاول:

interface IRepository<T> where T : class {
    IQueryable<T> Select();
}

تم التنفيذ كمستودع عام:

public class Repository<T> : IRepository<T> where T : class {
    public IQueryable<T> Select() {
        return this.ObjectContext.CreateObjectSet<T>();
    }
}

تم التنفيذ كمستودع متخصص:

public class EmployeeRepository : IRepository<Employee> {
    public IQueryable<Employee> Select() {
        return this.ObjectContext.Employees;
    }
}

يقوم كل من Repository<T> و EmployeeRepository بتنفيذ IRepository ، ومع ذلك يذهبون حول إجراء الاستعلام بشكل مختلف قليلاً. يجب أن يقوم المستودع العام بإنشاء مجموعة كائنات من T قبل محاولة القيام بأي شيء.

ضع في اعتبارك أنه من المفترض أن يكون Repository<T> مقفلاً على الواجهة ، حيث يمكن لتطبيق EmployeeRepository تنفيذ طرق أكثر تخصصًا لتحقيق منطق أكثر تعقيدًا.

آمل أن يكون هذا يساعدك قليلا.

Question

ما هو IRepository؟ لماذا يتم استخدامه ، وأمثلة وجيزة وبسيطة لن يضر.




IRepository ليس نوعًا محددًا في إطار .Net. عادة عندما ترى واجهة مسمى بها ، يستخدم البرنامج نمط مستودع التخزين ( https://web.archive.org/web/20110503184234/http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/10/08/the-repository-pattern.aspx ). بشكل عام عندما يستخدم الأشخاص هذا النمط ، سيقومون بإنشاء واجهة تتقيد بها جميع المستودعات. هناك العديد من الفوائد للقيام بذلك. بعض الفوائد هي كود de copupling واختبار الوحدة.

ومن الشائع أيضًا أن يتم ذلك حتى يمكن الاستفادة منه مع IoC ( http://en.wikipedia.org/wiki/Inversion_of_control ).




Related