Adapter Design Pattern (Mẫu Thiết kế Bộ Chuyển Đổi) là một mẫu thiết kế cấu trúc trong lập trình hướng đối tượng. Nó cho phép các lớp (class) với các giao diện không tương thích có thể làm việc cùng nhau bằng cách chuyển đổi giao diện của một lớp thành giao diện mà lớp khác mong đợi.

Đọc xong khái niệm không hiểu gì trơn? yên tâm hãy đọc code sau:

class OldCoffeeMachine {
   makeBlackCoffee() {
      console.log('Pha cà phê đen...');
   }

   makeCoffeeWithMilk() {
      console.log('Pha cà phê sữa...');
   }
}

// CoffeeApp (Ứng dụng di động)
class CoffeeApp {
   constructor(coffeeMachineAdapter) {
      this.coffeeMachineAdapter = coffeeMachineAdapter;
   }

   makeIcedBlackCoffee() {
      this.coffeeMachineAdapter.makeBlackCoffee();
      console.log('Thêm đá...');
   }

   makeHotCoffeeWithMilk() {
      this.coffeeMachineAdapter.makeCoffeeWithMilk();
      console.log('Làm nóng...');
   }
}

// CoffeeMachineAdapter (Bộ chuyển đổi)
class CoffeeMachineAdapter {
   constructor(oldCoffeeMachine) {
      this.oldCoffeeMachine = oldCoffeeMachine;
   }

   makeBlackCoffee() {
      this.oldCoffeeMachine.makeBlackCoffee();
   }

   makeCoffeeWithMilk() {
      this.oldCoffeeMachine.makeCoffeeWithMilk();
   }
}

// Sử dụng
const oldCoffeeMachine = new OldCoffeeMachine();
const adapter = new CoffeeMachineAdapter(oldCoffeeMachine);
const coffeeApp = new CoffeeApp(adapter);

coffeeApp.makeIcedBlackCoffee();
// Output:
// Pha cà phê đen...
// Thêm đá...

coffeeApp.makeHotCoffeeWithMilk();
// Output:
// Pha cà phê sữa...
// Làm nóng...

ok, hiểu đúm hong?

Nôm na Adapter pattern cũng giống như decorator nhưng nó sẽ gắn thêm sức năng, chứ không phải thừa hưởng+ imporve cho method đó

Untitled