Untitled

Decorator Pattern là một mẫu thiết kế cấu trúc cho phép bạn thêm chức năng mới vào một đối tượng hiện có một cách linh hoạt, mà không cần sửa đổi cấu trúc lớp ban đầu. Điều này đạt được bằng cách "gói" đối tượng gốc trong các đối tượng decorator, mỗi đối tượng decorator thêm một lớp chức năng cụ thể.

Untitled

Chưa hiểu đúng hong? Nhìn code là hiểu liền nè:

class Coffee {
  constructor() {
    this.cost = 5;
    this.description = "Cà phê đen";
  }

  getCost() {
    return this.cost;
  }

  getDescription() {
    return this.description;
  }
}

//create a class decorator for caffe milk
class MilkDecorator {
  constructor(coffee) {
    this.coffee = coffee;
  }

  getCost() {
    return this.coffee.getCost() + 2;
  }

  getDescription() {
    return this.coffee.getDescription() + ", sữa";
  }
}

// Sử dụng
let coffee = new Coffee();
coffee = new MilkDecorator(coffee);

console.log(coffee.getCost());    // Output: 9
console.log(coffee.getDescription()); // Output: Cà phê đen, sữa

Rứa là dùng cái decorator ni để làm cái thằng class MilkDecorator cũm okie nè

Hiểu, đúng hong? Vậy nó có lợi gì?

Lưu ý: