Giải thích service-repository pattern không dùng code dễ hiểu nhất
Hãy tưởng tượng ứng dụng của chúng ta là một công ty, lúc này service-repository pattern được biểu diễn như sau:
- Controller là giám đốc
- Service là trưởng phòng
- Repository là em văn thư
Ban đầu, công ty nhỏ, giám đốc muốn thưởng nhân viên, giám đốc trực tiếp dùng excel để lấy danh sách nhân viên luôn.
Controller => Database
Sau đó công ty làm ăn phát đạt, cũng như ứng dụng của chúng ta lớn lên. Giám đốc thuê 1 em văn thư, giám đốc muốn thưởng nhân viên, giám đốc bảo em văn thư in cho anh danh sách nhân viên. Giám đốc KHÔNG cần biết em văn thư lưu trữ danh sách nhân viên ở đâu, excel, google sheets, database, file text… Đặt tên cột là gì. Chỉ cần biết là cứ bảo xuất cho anh danh sách nhân viên là em văn thư xuất được.
Controller => Repository => Database
Sau cty lớn lên nữa. Giám đốc thuê 1 anh trưởng phòng hành chính nhân sự. Giám đốc bảo: Em thưởng nhân viên cho anh. Anh trưởng phòng nhân sự (service) bảo em văn thư xuất danh sách nhân viên để anh thưởng.
Giám đốc (Controller) KHÔNG cần biết anh trưởng phòng nhân sự thưởng thế nào. Anh Trưởng phòng (service) cũng KHÔNG cần biết em văn thư lưu trữ danh sách nhân viên ở đâu.
Lúc này:
Controller => Service => Repository => database
- Anh trưởng phòng hành chính nhân sự chỉ làm các việc liên quan đến hành chính nhân sự thôi. Như vậy một cty có nhiều trưởng phòng (service)
- Có những công việc giám đốc cần gọi nhiều thằng trưởng phòng lên mới làm được.
- Em văn thư lưu trữ danh sách nhân viên ở đâu, thế nào thì tuỳ cô ấy. Cô ấy đặt tên cột trong excel là gì thì cũng không ảnh hưởng gì đến anh trưởng phòng. Như vậy phải code sao cho khi đổi tên một cột trong db thì ko phải sửa code logic nghiệp vụ ở Service