2014-04-22 18 views
7

Nói chung, tôi biết rằng có 3 loại lớn của mẫu thiết kếLoại mô hình kho lưu trữ là gì?

  1. mẫu Creational (Factory, Singleton, vv)
  2. cấu Pattern (Composite, Adapter, Proxy, vv)
  3. mẫu hành vi (Thông số kỹ thuật, Command, vv)

Nhưng tôi không biết loại tôi có thể đưa mô hình Repository trong.

Mẫu Repository có thuộc một trong ba loại trên không? Hay là loại ở giữa (2) và (3) mẫu?

Trả lời

9

Kho lưu trữ có thể được xem như một loại mặt tiền đặc biệt (kết cấu) nhưng cũng là một loại đặc biệt của Nhà máy (sáng tạo). Ngoài ra, như Repository thường trưng bày giao diện giống như bộ sưu tập, sau đó nó có thể là một ứng dụng đặc biệt của Iterator (hành vi).

Điều tôi đang cố gắng nói là không phải những danh mục đó cũng không phải là mẫu tự là bất kỳ loại học thuyết xác định nào. Chỉ có một số ý tưởng và một ngôn ngữ cố gắng làm cho chúng rõ ràng hơn. Những loại này chỉ là những người giúp đỡ cố gắng thể hiện bằng cách nào đó một số mô hình. Các mẫu cũng chỉ là các biểu thức khác nhau của một nguyên tắc khớp nối lỏng lẻo chung. Biên giới của họ bị mờ.

+0

Tôi không chắc về sáng tạo. Kho lưu trữ không tạo ra bất kỳ đối tượng mới nào, phải không? – guillaume31

+0

Nó tạo một đối tượng * mới * dựa trên * Dữ liệu * liên tục. Về mặt kỹ thuật. Nhưng ở mức độ trừu tượng cao hơn, bạn có thể xem xét đối tượng này vừa được đưa trở lại từ cửa hàng, không được tạo ra. –

+1

Việc bù nước hiếm khi được thực hiện bởi chính Kho lưu trữ trong những ngày này (chủ yếu được giao cho ORM). Khi bạn sử dụng phương thức 'Get ...()' của repo, bạn không tự nhủ "Tôi muốn xây dựng một đối tượng mới" hoặc "X đối tượng mới" để gọi nó là âm thanh lạ thường với tôi. – guillaume31

4

Tôi giả sử bạn tham khảo repository pattern bởi Martin Fowler.

Ông nói:

Repository: làm trung gian giữa các tên miền và dữ liệu lớp lập bản đồ sử dụng một giao diện thu thập giống như để truy cập vào các đối tượng miền.

Bản thân anh ấy phân loại mẫu là "Ánh xạ siêu dữ liệu đối tượng-quan hệ".

Nếu bạn muốn sử dụng các danh mục trong GOF book, tôi sẽ đặt nó vào danh mục mẫu cấu trúc vì trọng tâm của mẫu này là trình bày giao diện/chế độ xem cho khách hàng, tương tự với Adaptor/Facade/Proxy mẫu.

Các vấn đề liên quan