2010-09-22 39 views
5

Dường như có sự tương đồng giữa mẫu Proxy và bộ điều hợp?Sự khác biệt giữa mẫu Proxy và mẫu Bộ điều hợp?

Bất kỳ ai có thể giải thích sự khác biệt là gì? Tại sao chúng tôi yêu cầu cả hai? Trong đó vấn đề chúng ta nên sử dụng chỉ proxy và không khác bằng một ví dụ .net?

Cảm ơn bạn

Trả lời

7

proxy thường được sử dụng cho các tình huống sau:

  • Các tiềm ẩn đối tượng 'thực tế' là tốn kém để tạo ra. Sau đó bạn có proxy là một trình giữ chỗ trong khi nó được tạo ra (biểu tượng thanh tiến trình trong khi tải xuống một hình ảnh lớn là một ví dụ điển hình). Lazy-loading là một ví dụ điển hình khác. Ý tưởng là chúng tôi không biết liệu Người dùng có bao giờ nhấp vào ngăn 'Chi tiết' hay không - vì vậy chúng tôi sẽ hoãn tải cho đến khi anh ta thực sự nhấp vào hoặc hệ thống không hoạt động.
  • Bạn muốn kiểm soát quyền truy cập (SecurityProxy) đối với một số hoặc tất cả thành viên của đối tượng 'thực' trong proxy.

Bộ điều hợp đóng vai trò khác - chúng thu hẹp khoảng cách giữa hai lớp không có mối quan hệ. Bộ điều hợp có thể hoạt động như cả hai đối tượng. Điều này được sử dụng chủ yếu khi người ta phải tích hợp với các hệ thống cũ (hoặc khung bên thứ 3 cho vấn đề đó), nơi không thể thay đổi API.

Hy vọng điều này sẽ hữu ích!

16

Một proxy cho thấy hành vi giống hệt như đối tượng mà nó ẩn. Một proxy thường được sử dụng để liên lạc với một đối tượng từ xa mà không cần phải biết cách liên lạc với nó. Một ví dụ là một dịch vụ WCF, bạn có thể đóng gói truy cập dịch vụ trong một proxy để lộ ra chính xác cùng một giao diện như dịch vụ wcf, nhưng ẩn các chi tiết thực hiện như sử dụng riêng và xử lý các lỗi, vv với dịch vụ WCF tại địa phương.

Bộ điều hợp cũng ẩn đối tượng bên dưới, nhưng nó biến đổi dữ liệu bạn trao đổi với đúng định dạng và nội dung được sử dụng bởi đối tượng bên dưới. Một ví dụ thực sự là một hệ thống kế thừa, như Goblin nói. Bạn đóng gói sự phức tạp của việc nói chuyện với hệ thống kế thừa (có thể nó sử dụng một API chat hoặc CRUDy và bạn muốn ẩn nó sau một hoạt động thô) vào một adapter để prvide một cách đơn giản để nói chuyện với hệ thống kế thừa cho khách hàng của bạn.

Đó là cách tôi hiểu nó ít nhất.

EDIT: bằng cách này, cá nhân tôi cảm thấy rằng bạn không phải xem tên mẫu thiết kế dưới dạng cuối cùng tất cả. Chọn đúng mẫu dựa trên những gì bạn muốn đạt được và gọi nó là bất cứ điều gì bạn muốn.

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