Repository-Muster Standardisierung der Methoden

Alle ich bin auf der Suche nach der richtigen definition der repository-pattern.

Meinem ursprünglichen Verständnis war diese (extrem verdummt)

  • Trennen Sie Ihre Business-Objekte aus den Daten Objekte
  • Standardisierung access-Methoden im data access layer.

Habe ich wirklich gesehen, 2 unterschiedliche Umsetzung, und es gibt keine formale Beispiele online, die, die ich gesehen habe, sind versteckt in den Büchern.

Umsetzung 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();
}

Umsetzung 2 :

public interface IProductRepository {
      List<Product> GetAllProducts();
      void CreateProduct(Product p);
      void UpdateProduct(Product p);
      List<Product> GetProductsByCustomerID();
}

Bemerken, die erste ist generischer Get/Update/GetAll, etc, die zweite ist mehr von dem, was ich definieren würde "DAO" wie.

Beide teilen sich eine Extraktion aus den Daten der Entitäten. Die ich mag, aber ich kann das gleiche tun mit einem einfachen DAO. Aber das zweite Stück der Zugang zu standardisieren Operationen, die ich sehen Wert, wenn Sie implementieren diese unternehmensweite würden die Leute einfach wissen, der Satz von Zugriffsmethoden für das repository.

Bin ich falsch anzunehmen, dass die Standardisierung der Zugriff auf Daten ist ein integraler Bestandteil dieses Muster ? Wenn beide richtig sind, warum soll man auswählen und Implementierung 2?

Rhino hat einen guten Artikel über die Umsetzung von 1, und natürlich MS hat eine vage definition und ein Beispiel für die Umsetzung 2 ist hier.

  • Mir ein interface ist eine Abstraktion, also das Gegenteil von einer Umsetzung. Besprechen wir nur die Schnittstellen hier, oder vielmehr die Implementierung von Klassen?
InformationsquelleAutor Nix | 2010-04-21
Schreibe einen Kommentar