Zum Inhalt springen

Repository (Entwurfsmuster)

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 25. Januar 2024 um 21:28 Uhr durch imported>Jansan (Implementierung).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

Repository ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung. Es dient als Schnittstelle zwischen der Domänenschicht und der Datenzugriffsschicht. Es ist insbesondere in den Situationen hilfreich, in denen es viele unterschiedliche Domänenklassen oder viele unterschiedliche Zugriffe auf die Datenzugriffsschicht gibt.

Konzeptionell kapselt das Repository die durch die Datenzugriffsschicht persistierten Objekte und den Zugriff auf sie – unabhängig davon, ob diese in einer Datenbank gespeichert, oder über einen Webservice (oder anderweitig) zur Verfügung gestellt werden. Damit wird ein objektorientierter Zugriff auf die Datenzugriffsschicht und somit eine klare Trennung und gerichtete Abhängigkeit zwischen der Domänenschicht und der Datenzugriffsschicht erreicht.

Implementierung

Gegenüber der Domänenschicht verhält sich das Repository wie eine Liste von Fachobjekten. Fachobjekte können wie bei einer im Speicher befindlichen Liste hinzugefügt oder entfernt werden, das Repository kümmert sich um das Mapping und den Aufruf der entsprechenden Operationen der Datenzugriffsschicht. Darüber hinaus können mittels deklarativer Suchabfragen über das Repository Abfragen in der Datenzugriffsschicht abgesetzt werden. In diesen Fällen hilft der Einsatz des Repository-Entwurfsmusters die sonst notwendige mehrfache Implementierung der Suchlogik zu reduzieren.

Siehe auch

  • Domain-Driven Design – Repositorys sind ein wichtiger Bestandteil des Domänenmodells von Domain-Driven Design

Literatur

  • Martin Fowler: Patterns of Enterprise Application Architecture. Addison-Wesley-Longman, Amsterdam 2002, ISBN 0-321-12742-0, S. 322 (martinfowler.com).

Weblinks

  • Edward Hieatt, Rob Mee: Repository. Martin Fowler, abgerufen am 1. Februar 2013 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)): „Repository mediates between the domain and data mapping layers using a collection-like interface for accessing domain objects.“
  • The Repository Pattern. msdn, abgerufen am 1. Februar 2013 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)): „Use a repository to separate the logic that retrieves the data and maps it to the entity model from the business logic that acts on the model. The business logic should be agnostic to the type of data that comprises the data source layer. For example, the data source layer can be a database, a SharePoint list, or a Web service.“

<templatestyles src="Erweiterte Navigationsleiste/styles legacy.css" />Vorlage:Klappleiste/Anfang

Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objekt-
relationale Abbildung

Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation

Nachrichten-
übermittlungsmuster
andere

Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object

Vorlage:Klappleiste/Ende