Facade Pattern là gì? Vì sao các kỹ sư CẤP CAO thích sử dụng đến thế.

Nội dung bài viết

Video học lập trình mỗi ngày

Facade Pattern giúp các hệ thống vận hành trơn tru và đơn giản hơn ví dụ như Shopee, việc tính toán diễn ra như thế nào chúng ta không cần biết, người mua chỉ biết chọn hàng và xem giá.

Giá bao gồm giảm giá, chi phí vận chuyển, thuế, phí mua hàng... Người dùng cảm thấy hệ thống đơn giản, nhưng sau cú click mua hàng, thì bao nhiêu lập trình viên, bao nhiêu api được tích hợp vào đó. Do đó, bài này chúng ta sẽ đi tìm hiểu về Facade Pattern là gì?Triển khai Facade Pattern như thế nào?...

Facade Pattern là gì?

Facade Pattern là một pattern được sử dụng rộng rãi với mục đích giảm thiểu sự phức tạp giữa các hệ thống. Trong một hệ thống phần mềm hướng đối tượng, mối quan hệ giữa các lớp càng nhiều thì không có nghĩa là hệ thống được thiết kế tốt, ngược lại, nó có nghĩa là sự ghép nối giữa các lớp trong hệ thống quá lớn, phức tạp. Xem hình...

Một hệ thống như vậy thiếu tính linh hoạt trong việc bảo trì và sửa đổi, bởi vì những thay đổi đối với một lớp sẽ dẫn đến những thay đổi trong nhiều lớp và việc sử dụng Facade Pattern làm giảm sự kết hợp giữa các lớp ở mức độ lớn, có nghĩa là đơn giản hóa các lớp.

Facade Pattern ứng dụng cuộc sống

Trong cuộc sống thì chúng ta thường hiểu một khi chúng ta ăn sáng ở nhà thì phải chuẩn bị nhiều bước như mua đồ, nấu nướng, chuẩn bị... Ăn xong thì thêm thời gian rửa bác. Nói chúng rất cầu kỳ...

Nhưng nếu ra ngoài ăn sáng thì việc của bạn rất đơn giản, chỉ ngồi xuống và gọi món. Cuối cùng là tính tiền. Chúng ta không cần biết, cửa hàng ăn sáng phải chuẩn bị như thế nào, quan trọng là chúng ta khỏe được việc là ok.

Tiếp đến là chúng ta đi uống coffee, tương tự cũng vậy nếu như chúng ta tự mua về pha và uống thì rất phức tạp và cầu kỳ. Chính vì thế, mua một ly coffee, để trong xe vừa đi vừa uống một cảm giác rất thư thái. Tương tự nếu như phần mềm thì sao?

Facade Pattern ứng dụng trong shopee

Chúng ta vừa thảo luận về Facade Pattern được áp dụng trong cuộc sống, nhưng đối với phần mềm thì sao?

Nếu như bạn theo dõi về series eCommerce aliconcon thì bạn sẽ hiểu về độ phức tạp của sàn thương mại điện tử. Như Shopee chẳng hạn, người dùng họ chỉ biết một cú click mua hàng là mọi chuyện được làm sáng tỏ như giảm giá bao nhiêu? Chi phí vận chuyển bao nhiêu? Chi phí chiết khấu bao nhiêu? Mọi việc trở nên rõ ràng hơn.

Nhưng đằng sau đó mỗi hệ thống chịu trách nhiệm nhiều chức năng như discount, fees, shipping... Tất cả đều dựa vào Facade Pattern để đơn giản hóa nó đi.

Chúng ta lấy thêm một ví dụ nữa để hiểu về Facade Pattern là gì?. Đó là khi chúng ta upload một file video lên youtube. Thì có nhiều độ phân giải khác nhau như 360, 720... Nghĩa là đằng sau đó có nhiều tác vụ liên quan trong đó bao gồm convert video ra nhiều độ phân giải, check xem có ăn cắp bản quyền hay không vv... Tất cả được đóng gói và sử dung Facade Pattern.

Nếu như các bạn đã hiểu về khái niệm thì chúng ta đi vào triển khai một ví dụ nho nhỏ sử dụng es6.

Facade Pattern es6

Giả sử chúng ta xây dựng một module tính tiền cho Shopee thì quá trình diễn ra ba bước như sau. Đầu tiên là check xem sản phẩm này có được giảm giá hay không thông qua class Discount. Sau đó đưa vào tính thuế AVT 5% thông qua class Fees, cuối cùng là tính tiền thông qua dịch vụ vận chuyển là class shipping. Tham khảo code dưới đây.

class ShopPattern {
  constructor() {
    this.discount = new Discount();
    this.shipping = new Shipping();
    this.fees = new Fees();
  }

  calc(price) {
    price = this.discount.calc(price);
    price = this.fees.calc(price);
    price += this.shipping.calc();

    return price;
  }
}

class Discount {
  calc(value) {
    return value * 0.9;
  }
}

class Shipping {
  calc() {
    return 5;
  }
}

class Fees {
  calc(value) {
    return value * 1.05;
  }
}

export default ShopPattern;

Xong hén. các bạn xem hết series này là các bạn mạnh dạn hơn trước nhiều đấy.

Có thể bạn đã bị missing