Thứ Bảy, 30 tháng 3, 2013

Bridge

1. Khái niệm

Bridge pattern  hướng đến việc tách tính trừu tượng ra khỏi tính hiện thực nó để từ đó cả 2 có thể hoạt động một cách độc lập với nhau.

2. Vấn đề thực tế

Thông thường, khi một class implement 1 interface, thì class sẽ phải khai báo việc thực thi tất cả các function được  định nghĩa trong interface đó.  Điều gì xảy ra khi một số các function trong interface lại để thể có nhiều dạng thể hiện khác nhau? Ví dụ như thể hiện giao diện thì có thể có nhiều dạng như Giao diện dạng Window, Giao diện dạng MacOS, Giao diện dạng Linux...

Làm thể nào để có thể tách tính trừu tượng của function (trong interface) ra khỏi việc hiện thực nó (khi khai báo function trong class) để đáp ứng được yêu cầu trên?

3. Giải pháp

Chúng ta sẽ dùng Bridge pattern để giải quyết vấn đề trên.

Giả sử interface A chứa các function mà đề bài yêu cầu.

Đầu tiên chúng ta cần xác định các funtion trong interface A hiện có, sau đó chúng ta sẽ thêm một interface B nữa có thể đáp ứng được yêu cầu của các function trong interface A. Vì sao chúng ta phải thêm 1 interface B để đáp ứng các yêu cầu của interface A? Câu trả lời chính là vì sự đa dạng trong cách giải quyết các vấn đề của interface A, khi đó interface B đóng vai trò như một mẫu các giải pháp cho các function của interface A, các class implement interface B sẽ thực hiện việc giải quyết các vấn đề này trong thực tế.

Bridge pattern là mô hình cầu nối nhằm thực hiện việc đáp ứng các yêu cầu mang tính trừu tượng nhưng lại có nhiều cách thể hiện cho yêu cầu trừu tượng đó.

4. Mô hình




5. Code sample


6. Mối liên hệ với các pattern khác

Không có nhận xét nào:

Đăng nhận xét