2016-06-15 10 views
2

Basierend auf der folgenden URL ein Repository-Muster ist im wesentlichen eine Schicht aus einem Repository-Objekte, die den Datenzugriff verwendet werden zur Einkapselung:Repository Mustervariationen?

http://martinfowler.com/eaaCatalog/repository.html

Zum Beispiel kann ein UserRepository Objekt wäre ein GetUsers haben() Methode wie folgt

Ist das alles das Repository-Muster oder gibt es mehr dazu? Gibt es Variationen dieses Musters? Zum Beispiel glaube ich, dass ich in der Vergangenheit jemandem begegnet bin, der behauptet hat, dass dieses Muster generische/dynamische CRUD für Entitäten beinhaltet. Da beispielsweise CRUD ein grundlegendes und wiederholbares Muster ist, würde ein Repository-Muster CRUD-Funktionalität dynamisch für beliebige/alle Entitäten bereitstellen. Ich denke so etwas wie: neues Repository(). Read(). Gibt es einen Namen für diese Variante des Repository-Musters?

Antwort

0

Repository-Muster ist einfach über die Entkopplung von der spezifischen Datenspeicherimplementierung (en). CRUD würde absolut unter diesen Schirm passen, und tut es gewöhnlich.

Das Wichtigste ist nur, genau zu entscheiden, welche Operation für welche Geschäftsobjekte benötigt wird. Sie müssen nicht alle CRUD-Operationen für alles verfügbar machen.

Hier ist ein ziemlich guter Artikel mit Beispielcode für eine Standard-Repository-Muster-Implementierung. YMMV. http://www.codeproject.com/Articles/526874/Repository-pattern-done-right

+0

Danke. Kennen Sie den Namen des anderen Musters, das ich in meinem Beitrag beschrieben habe ?: var users = new Repository () .ReadAll() Ich bin sicher, dass es durch ein oder mehrere Designmuster beschrieben werden kann, obwohl das Repository-Muster nicht das beste ist Art und Weise es zu beschreiben. Zur Erinnerung: Diese Implementierung basiert auf der Tatsache, dass alle Entitäten eine bestimmte Untergruppe von generischen/wiederholbaren CRUD-Methoden verwenden. – user6411982

+0

ReadAll() oder GetAll() würde immer noch unter dem Dach von Repository Pattern passen. Sie könnten sogar Methoden mit Abfrageparametern wie GetWhere (Prädikat) oder ähnlichem anpassen. –

+0

In Bezug auf meinen letzten Kommentar werde ich ihn nur als "dynamisches Repository" -Muster bezeichnen, es sei denn, jemand anders kann ein formelleres Entwurfsmuster identifizieren, das mit dieser Implementierung verbunden ist – user6411982