Trung BìnhDesign Patterns iconDesign Patterns

Adapter pattern là gì? Ví dụ thực tế trong TypeScript?

Adapter cho phép các interface incompatible làm việc cùng nhau bằng cách bọc một object trong wrapper cung cấp interface mà client kỳ vọng.

Ví dụ thực tế: tích hợp third-party payment SDK:

typescript
interface PaymentProvider {
  charge(cents: number): Promise<Receipt>
}

class PayPalAdapter implements PaymentProvider {
  constructor(private sdk: PayPalSDK) {}
  charge(cents: number) {
    return this.sdk.makePayment(cents / 100, 'USD')
  }
}

Hai loại Adapter: Object Adapter (composition, prefer này) và Class Adapter (multiple inheritance — không có trong TS/JS).

  • Dùng khi: tích hợp legacy code hoặc third-party library có interface không phù hợp; khi không thể sửa source code của class cần adapt.
  • Trong frontend, Adapter thường dùng để normalize API response format khác nhau về một schema thống nhất.

Xem toàn bộ Design Patterns cùng filter theo level & chủ đề con.

Mở danh sách Design Patterns