Was ist der Unterschied zwischen dem Repository-Muster und dem Fassadenmuster?

9

Ich habe in meinen Anwendungen immer das Repository-Muster verwendet. Aber ich habe gesehen, dass viele Leute Fassaden anstelle des Repositorys für Namenskonventionen verwenden, aber der Vorgang ist der gleiche, denke ich. Warum gibt es diesen Unterschied? Gibt es einen echten Unterschied zwischen ihnen oder nicht?

Mirko
quelle

Antworten:

11

Eine Fassade ist allgemeiner als ein Aufbewahrungsort.

Eine Fassade kann auf alles angewendet werden, was nicht auf Persistenz basiert, während ein Repository den Zugriff auf eine zugrunde liegende Quelle kapseln und sie wie eine In-Memory-Datenquelle aussehen lassen soll.

Fassaden dienen zum Erstellen einer einfachen Schnittstelle für eine andere, komplizierte Schnittstelle.

Oded
quelle
Das Repository ist also für die Kommunikation mit der Datenschicht ausgelegt, und Fassaden sind allgemeiner. Zum Beispiel kann eine Fassade eine andere Operation ausführen, aber die Struktur ist wie ein Repository gestaltet, oder?
Mirko
1
@ MirkoPastorelli - es kann. Ein Beispiel für eine Fassade wäre, einen einzigen Einstiegspunkt für Code anzugeben, der tatsächlich mit mehreren Subsystemen umgehen muss.
Oded
4
@MirkoPastorelli: Ein Repository ist nicht für die Kommunikation mit der Datenschicht vorgesehen, sondern für die Umhüllung der Kommunikation mit einer Datenschicht und die "Abstraktion" vom Benutzer des Repos. (So ​​kann man beispielsweise zu Testzwecken ein Schein-Repository bereitstellen, das nur fest codierte Testdaten bereitstellt und keine anderen Abhängigkeiten aufweist). Unter diesem Gesichtspunkt ist ein Repo in der Tat nichts anderes als eine bestimmte Form der Fassade.
Doc Brown