Thứ Tư, 27 tháng 3, 2013

Adapter

1. Khái niệm

Adapter pattern chuyển đổi interface của class thành dạng interface mà client yêu cầu.

Adapter pattern cho phép các class không tương thích interface có thể làm việc chung với nhau.

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

Trong thực tế cuộc sống, có lẽ chúng ta không ít lần đề cập đến các chuẩn. Ví dụ về phích cắm điện, chúng ta có những chuẩn phích 2 chấu, 3 chấu,...Tương tự thế, ổ cắm điện cũng có chuẩn dành cho loại phích tương ứng.

Vấn đề đặt ra là làm thế nào để cắm phích điện 3 chấu vào ổ cắm 2 chấu? Chúng ta sẽ dùng một bộ chuyển gồm 2 đầu, một đầu dùng để cắm phích điện 3 chấu, còn một đầu có 2 chấu để cắm vào ổ cắm 2 chấu.

Như vậy, chúng ta đã sử dụng Adapter pattern để giải quyết vấn đề về tương thích.

Trong lập trình hướng đối tượng, Adapter pattern sẽ được thể hiện như thế nào?

3. Giải pháp

Adapter pattern thực chất là mô hình dùng để giải quyết các bài toán về tính tương thích giữa các class không giao tiếp được với nhau. Để giải quyết vấn đề về tương thích, chúng ta cần thêm một nhân tố trung gian hội đủ việc giao tiếp giữa các class, nhân tố đó chính là adapter.

Lấy 1 ví dụ về 1 hệ thống lưu trữ dữ liệu học sinh. Ban đầu, hệ thống được thiết kế lưu trữ dữ liệu ở dạng text file. Mỗi dòng trong file thể hiện thông tin cơ bản của 1 học sinh. Các trường dữ liệu được phân cách bởi dấu "|". Sau một thời gian, nhà trường thay đổi cách lưu trữ bằng cách sử dụng database. Lúc này, mỗi trường dữ liệu sẽ là 1 cột trong bảng học sinh. Chương trình mới sử dụng tham số đầu vào là object để lưu vào database (mô hình ORM) trong khi chương trình cũ sử dụng tham số đầu vào là 1 chuỗi text để lưu vào file. Như vậy, làm thế nào với tham số đầu vào là 1 chuỗi text, chúng ta có thể chuyển nó thành object để lưu vào database?

Chúng ta sẽ xem xét mô hình bên dưới để có lời giải đáp về vấn đề trên.

4. Mô hình




5. Code sample


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

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

Đăng nhận xét