2009-04-24 9 views
9

Jeśli utworzysz klasę repozytorium, która hermetyzuje całą twoją logikę trwałości dla danej jednostki, taką jak PersonRepository, ale twoja klasa repozytorium nie implementuje wzorca Jednostki Pracy lub wzorca Mapy Tożsamości, czy wciąż jest uważana za repozytorium? Innymi słowy, są to jednostki pracy i mapy tożsamości wymagane do wdrożenia repozytorium, czy możemy po prostu wywołać dowolną klasę, która hermetyzuje naszą logikę trwałości w repozytorium?Czy repozytorium nadal jest repozytorium bez jednostki pracy?

Powinienem dodać jedną rzecz. Jeśli repozytorium nie wymaga tych wzorców i tak naprawdę jest to tylko kontener dla metod utrwalania, to jaka jest różnica między repozytorium a obiektem DAO (Data Access Object)? Czy tworzymy po prostu wiele nazw dla tego samego obiektu, czy też brakuje nam części tego, co powinno być repozytorium?

Odpowiedz

3

Tak, wciąż jest to repozytorium.

Jeśli chodzi o Repozytorium == DAO, myślę, że repozytorium powinno znajdować się na warstwie logiki biznesowej, a DAO powinno znajdować się na warstwie dostępu do danych, tj. Myślę, że znajdują się na różnych warstwach. Jak rozumiem, repozytorium wywołuje metody DAO w celu ładowania i utrwalania danych.

3

Powiedziałbym, że wzory repozytorium i jednostki pracy są ortogonalne.

Bardzo często chcę, aby pojedyncza jednostka pracowała na wielu operacjach na wielu repozytoriach, więc implementacja tego mogłaby należeć do wyższej warstwy.

1

W oparciu o to, co powiedział Sii - wydaje mi się, że jest lepiej dla mnie, jeśli repozytorium i jednostka pracy nie są ze sobą powiązane. Oddzielenie obaw?

1

Rozważając rozdzielenie spraw, pamiętaj, że Twoje repozytorium będzie miało metody implementacji pamięci masowej, co pozwoli na uniknięcie problemu z głównym kodem. Jest to pomocne przy testach jednostkowych, a także w końcu całkowicie zamieniać implementację przechowywania danych (przykładem implementacji pamięci masowej będzie LINQ-SQL w ASP.NET.)

Powiązane problemy