Khái niệm:
Chuyển interface của một lớp thành interface khác mà các client mong
muốn. Adapter để cho các lớp làm việc với nhau có thể không bới vì các
interface không tương thích.
Mức độ sử dụng: vừa
UML Class Diagram:
Những lớp và/hoặc đối tượng trong mẫu thiết kế này:
- Target (ChemicalCompound): định nghĩa một domain-specific interface mà Client sử dụng.
- Adapter (Compound): làm cho Adaptee interface tương thích với Target interface.
- Adaptee (ChemicalDatabank): xác định một interface đang tồn tại cần làm tương thích.
- Client (AdapterApp): phối hợp các đối tượng phù hợp cho Target interface.
Adapter: khi nào dùng và dùng ở đâu
Các lập trình viên .NET viết các lớp đưa ra các phương thức được gọi
bởi các client. Hầu hết thời gian chúng có thể điều khiển các interface,
nhưng có một số trường hợp, chẳng hạn khi dùng các thư viên của hãng
thứ 3, nơi chúng không thể làm được điều đó. Thư viện của hãng thứ 3
thực thi các dịch vụ được mong đợi nhưng các phương thức của interface
và các tên của thuộc tính khác biệt so với những gì client mong đợi. Đây
là một trường hợp mà bạn cần sử dụng mẫu thiết kế Adapter. Adapter cung
cấp một interface mà client mong đợi sử dụng những dịch vụ của một lớp
với một interface khác. Các adapter thường được sử dụng trong các môi
trường lập trình nơi mà các thành phần hoặc các ứng dụng mới cần được
tích hợp và làm việc với nhau với các thành phần đang tồn tại.
Các adapter cũng hữu ích trong các trường hợp refactor. Giả sử bạn có
2 lớp thực thi các chức năng khác nhau nhưng có các interface khác
nhau. Client sử dụng cả 2 lớp này, nhưng phần code thì sẽ không thật rõ
ràng và đơn giản hơn để hiểu nếu chúng cùng chia sẻ một interface. Bạn
không thể thay thế interface này, nhưng bạn có thể “che” những khác biệt
này bằng cách sử dụng Adapter cho phép client kết nối thông qua một
interface chung. Adapter này xử lý việc ánh xạ giữa interface được chia
sẻ và các interface gốc.
Demo
0 comments:
Post a Comment