2011-10-14 26 views
6

Trong cuốn sách Design Patterns by GoF (Eric Gamma và những người khác), mẫu bộ điều hợp hai chiều được đề cập được sử dụng để minh bạch. Chúng hữu ích khi 2 máy khách khác nhau muốn xem cùng một đối tượng khác nhau. Có thể một số cho một ví dụ C + + cho cùng và trong đó các kịch bản thực tế nó có thể được sử dụng ??Mô hình bộ điều hợp hai chiều

+0

là bài tập về nhà này? –

+0

:) không không .. Nó không phải là một bài tập về nhà, tôi đang chuẩn bị cho một cuộc phỏng vấn và mặc dù tôi hiểu được mẫu adapter, tôi không hiểu cách sử dụng bộ điều hợp hai chiều. Tôi đã đề cập đến C++ vì các ví dụ trong cuốn sách này nằm trong Smalltalk mà tôi không biết. – Priyanka

+0

Nhưng các ví dụ trong cuốn sách là tất cả trong C++ hoặc Smalltalk. Tại sao không chỉ nhìn vào mã do GoF đưa ra? Hay là cái được cho trong Smalltalk? Xin lỗi, tôi không có văn bản của tôi ở đây để kiểm tra. – duffymo

Trả lời

0

Khi Go4 giải thích (trang 143 cho tôi), nó là phần mở rộng của Bộ điều hợp cho đa kế thừa. Thay vì mở rộng một loại giao diện, lớp bộ điều hợp mở rộng hai.

2

Tôi thấy rằng giải thích cho here là khá tốt. Nó là một ví dụ C# nhưng lời giải thích là rõ ràng và ví dụ có thể khá dễ dàng được dịch sang mã C++. Ví dụ này cũng khá chi tiết.

+1

Được rồi, do đó, sự khác biệt duy nhất giữa bộ điều hợp hai chiều và bộ điều hợp lớp cổ điển là: 1) bộ điều hợp lớp cổ điển có thể được truy cập thông qua giao diện Itarget/client 2) bộ điều hợp hai chiều có thể được truy cập thông qua Itarget/giao diện lớp cũng như giao diện thích ứng – Priyanka

1

Bộ điều hợp hai chiều là bộ điều hợp thực hiện cả hai giao diện của Target và Adaptee. Đối tượng được điều chỉnh có thể được sử dụng như Target trong các hệ thống mới đối phó với các lớp Target hoặc như Adaptee trong các hệ thống khác đối phó với các lớp Adaptee. Đi sâu hơn vào dòng suy nghĩ này, chúng ta có thể có các adapter thực hiện các giao diện n, thích ứng với các hệ thống n. Bộ điều hợp hai chiều và bộ điều hợp n-way khó thực hiện trong các hệ thống không hỗ trợ đa kế thừa. Nếu adapter phải mở rộng lớp Target, nó không thể mở rộng một lớp khác như Adaptee, vì vậy Adaptee sẽ là một giao diện và tất cả các cuộc gọi sẽ được ủy nhiệm từ adapter đến đối tượng Adaptee.

Adapter Design Pattern

Nguồn: http://www.oodesign.com/adapter-pattern.html

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