Próbuję znaleźć poprawną definicję wzorca repozytorium.Schemat repozytoriów Standaryzacja metod
Mój oryginalny zrozumienie było to (bardzo dumbed dół)
- oddzielnych obiektów biznesowych z danych Przedmioty
- ujednolicić metody dostępu w warstwie dostępu do danych.
Naprawdę widziałem 2 różne implementacje i nie ma formalnych przykładów online, te, które widziałem są schowane w książkach.
Realizacja 1:
public Interface IRepository<T>{
List<T> GetAll();
void Create(T p);
void Update(T p);
}
public interface IProductRepository: IRepository<Product> {
//Extension methods if needed
List<Product> GetProductsByCustomerID();
}
Realizacja 2:
public interface IProductRepository {
List<Product> GetAllProducts();
void CreateProduct(Product p);
void UpdateProduct(Product p);
List<Product> GetProductsByCustomerID();
}
Wskazówka pierwsza jest nazwą rodzajową Get/Aktualizacja/GETALL itd, drugi jest bardziej od tego, co Chciałbym zdefiniować "DAO".
Obie udostępniają ekstrakcję z jednostek danych. Co lubię, ale mogę zrobić to samo z prostym DAO. Jednak drugi element standaryzuje operacje dostępu, które widzę w wartości, jeśli wdrożysz to przedsiębiorstwo, ludzie z łatwością poznają zestaw metod dostępu do twojego repozytorium.
Czy nie mam racji zakładając, że standaryzacja dostępu do danych jest integralną częścią tego wzorca? Jeśli obie są poprawne, dlaczego warto wybrać implementację 2?
Rhino ma dobry artykuł na temat realizacji 1 i oczywiście MS ma mgliste definition a przykładem realizacji 2 jest here.
Dla mnie _interface_ jest abstrakcją, tj. Przeciwieństwem _implementation_. Czy omawiamy tutaj tylko interfejsy, czy raczej klasy implementujące? – MEMark