Tìm hiểu về Repository Pattern và Generic Repository Pattern

Trong bài viết này, tôi sẽ demo cho bạn Repository Pattern là gì và lợi ích của việc sử dụng Repository Pattern. Tôi cũng sẽ giải thích về Generic Repository Pattern và các lợi ích của nó.

Tôi cũng nghĩ các bạn nên biết về DRY trước, DRY viết tắt là Don't Repeat Yourself - dịch là Đừng lặp lại chính bạn. Đó là một yếu tố rất quan trọng của OOP (Object Oriented Programming). Ngày nay với các dự án cho doanh nghiệp lớn chúng ta có thể có các kiến trúc đa tầng và chúng cần được triển khai DRY.

Chúng ta có thể triển khai DRY bằng cách sử dụng Repository Pattern

Repository Pattern

Nhiều khi dự án đòi hỏi chúng ta phải định nghĩa các nghiệp vụ giữa tầng business(Business Service Layer) và tầng truy xuất dữ liệu (DAL). Những logic đó có thể được định nghĩa sử dụng Repository Pattern. Về cơ bản Repository là một lớp trung gian giữa hai tầng này. Trong project sử dụng Entity Framework với ASP.NET MVC thì Data chính là tầng chứa các lớp dbContext và class enttiy. Còn business logic chính là tầng xử lý nghiệp vụ của dự án. Repository hầu hết được sử dụng những chỗ cần điều chỉnh dữ liệu trước khi truyền xuống tầng data hoặc truyền lên trên business logic.

Lợi ích của việc sử dụng Repository Pattern

  1. Tập trung hóa được các logic về xử lý dữ liệu hoặc business logic.
  2. Dễ dàng unit test
  3. Đưa ra kiến trúc linh hoạt
  4. Khi thay đổi logic của tầng data hoặc business logic, không cần thay đổi Repository

Generic Repository Pattern 

Trong các trường hợp khác, dự án lại đòi hỏi một cách tốt nhất để tạo ra tất cả các repository logic ở cùng một nơi. Chúng ta cần tạo 1 và chỉ 1 repository cho việc thao tác với toàn bộ các class entity. Vậy để giải quyết điều này chúng ta phải sử dụng Generic Repository Pattern.

Lợi ích của Generic Repository Pattern:

  1. Giảm thiểu sự trùng lặp code
  2. Đảm bảo các coder dùng chung 1 pattern
  3. Ít lỗi hơn
  4. Dễ dàng bảo trì sau này

Chú ý: Tất cả các bài viết trên TEDU.COM.VN đều thuộc bản quyền TEDU, yêu cầu dẫn nguồn khi trích lại trên website khác.

Lên trên