Adapter Pattern là gì? Trước hết cần hiểu Adapter là gì, nó có nghĩa là một bộ chuyển đổi dùng để kết nối hai hoặc nhiều thứ không thể kết nối với nhau để chúng có thể tương tác được với nhau. Ví dụ như trên điện thoại di động, ở các mẫu điện thoại đời cũ sẽ có cổng 3.5 cho jack cắm tai nghe nên chúng ta có thể cắm tai nghe trực tiếp. Tuy nhiên trên một số dòng đời mới, jack 3.5 sẽ bị loại bỏ, chỉ để lại cổng sạc. Và rồi các công ty đã sản xuất các bộ chuyển đổi gọi là adapter để có thể sử dụng tai nghe có dây 3.5 thông qua cổng sạc.

Vậy Adapter pattern là một mẫu thiết kế phần mềm liên quan đến cấu trúc cho toàn hệ thống, tập trung vào các mối quan hệ giữa các thực thể, các component, làm cho chúng tương tác dễ dàng với nhau hơn. Adapter Pattern đóng vai trò trung gian, tương thích cho hệ thống sẵn có đối ứng với các component mới mà không cần phải sửa đổi code, cho phép các interface không liên quan đến nhau có thể làm việc cùng nhau.

Ví dụ:

class OldCalc {
  operation(num1, num2, operation) {
    switch (operation) {
      case 'multiplication':
        return num1 * num2;
      case 'division':
        return num1 / num2;
      default:
        return NaN;
    }
  }
}

class NewCalc{
  div(num1, num2) {
    return num1 / num2;
  }
  mult(num1, num2) {
    return num1 * num2;
  }
}

class CalcAdapter{
  constructor(){
    this.newcalc = new NewCalc();
  }
  operation(num1, num2, operation) {
    switch(operation){
      case 'multiplication':
        return this.newcalc.mult(num1,num2);
      case 'division':
        return this.newcalc.div(num1,num2);
      default:
        return NaN;
    }
  }
}
   
// usage
const oldcalc = new OldCalc();
const multi = oldcalc.operation(4,2,'multiplication');
console.log(multi);

const calcadapter = new CalcAdapter();
const multi1 = calcadapter.operation(4,2,'multiplication');
console.log(multi1);

 

Leave a Reply

Your email address will not be published. Required fields are marked *