Adapter là lớp trung gian chuyển đổi interface của một lớp thành interface mà client mong đợi, để hai bên vốn không tương thích làm việc được với nhau — giống như "phích cắm chuyển đổi".
Adapter bọc đối tượng cần thích ứng và ánh xạ lời gọi: client gọi theo interface quen thuộc → adapter dịch sang lời gọi thật của đối tượng bên trong.
Khi nào dùng:
- Tích hợp thư viện/hệ thống bên thứ ba hoặc legacy có API không khớp với code của bạn mà không thể sửa mã nguồn của chúng.
- Chuẩn hóa nhiều nhà cung cấp khác nhau về một interface chung (ví dụ nhiều cổng thanh toán → một PaymentGateway).
Phân biệt: Adapter đổi interface cho khớp (không thêm hành vi); Decorator giữ nguyên interface nhưng thêm hành vi; Facade tạo interface đơn giản mới che cả một hệ con phức tạp.