Tôi cảm thấy câu trả lời khác của tôi là viết tắt của trường hợp chung, nhưng OP nhận xét yêu cầu cụ thể (vì vậy tôi cảm thấy nó xứng đáng là một câu trả lời riêng biệt). Đáng buồn là tôi không quen thuộc với mẫu Kho lưu trữ, nhưng tôi sẽ đâm vào những người khác. Theo nguyên tắc, tôi nghĩ cách tốt nhất để giải thích những vấn đề này là thông qua vấn đề bạn muốn giải quyết, tại sao bạn muốn giải quyết nó và làm thế nào vấn đề hoàn thành nó.
Người độc thân
Mẫu này được sử dụng khi chúng tôi muốn đảm bảo rằng chỉ có một thứ gì đó. Mô hình được thực hiện bằng cách ngăn người khác tạo đối tượng của chúng tôi.
Wikipedia
MVC
Mẫu này được sử dụng để giúp giữ mọi thứ theo mô-đun với tất cả các lợi ích đi kèm với đó. Chế độ xem là "giao diện người dùng", Mô hình là dữ liệu (bao gồm logic nghiệp vụ) và Bộ điều khiển là cách người dùng thao tác mô hình. Với tính mô-đun này, không có gì ngăn tôi có nhiều khung nhìn / bộ điều khiển để làm việc với cùng một mô hình. Đối với một ví dụ đơn giản hóa quá mức, tôi có thể tương tác với email ("kiểu máy") của mình thông qua một trang web, ứng dụng máy tính để bàn và iPhone của tôi ("lượt xem + bộ điều khiển"). Nếu tôi có hộp thư nhóm dùng chung, tôi có thể tạo bộ điều khiển không gửi email và sử dụng lại cùng chế độ xem ứng dụng và email. (vâng, quá đơn giản, nhưng hy vọng có thể hiểu được :))
Ngoài ra, với các mối quan tâm được xác định rõ ràng này, các thay đổi trong một (lý tưởng) không yêu cầu thay đổi trong một mối quan tâm khác. Ví dụ cụ thể, nếu tôi cần hỗ trợ đọc / ghi vào cơ sở dữ liệu MySQL thay vì cơ sở dữ liệu Oracle, tôi chỉ cần thay đổi mô hình của mình và chế độ xem / điều khiển của tôi không thay đổi.
Wikipedia
Nhà máy
Phải cẩn thận ở đây vì có nhiều mẫu tương tự được gọi là Factory ... Tôi sẽ nói về Tóm tắt Factory , nhưng bạn cũng nên biết đó cũng là một mẫu Phương thức Factory .
Về cơ bản, tôi sẽ sử dụng một Nhà máy Trừu tượng khi tôi biết những bước tôi muốn thực hiện, nhưng các bước về cách thực hiện các bước riêng lẻ này có thể khác nhau. Ví dụ, tôi có thể đang xây dựng một ứng dụng mà tôi cần tạo một hộp thoại với một nút trên đó. Bằng cách mã của tôi sử dụng một nhà máy UI giả định, nếu tôi cần mã của mình trên Mac hoặc Linux thay vì Windows, tôi chỉ cung cấp một nhà máy khác và phần còn lại của mã không thay đổi. Đối với một ví dụ có khả năng lớn hơn, tôi có thể có Web Factory và đột nhiên hầu hết các mã ủng hộ ứng dụng máy tính để bàn của tôi hiện cũng cung cấp năng lượng cho một trang web phong phú :) (ok không thực tế vì lý do khác, nhưng trên lý thuyết :))