Làm thế nào để bạn sử dụng mặt tiền?

Mẫu mặt tiền che giấu sự phức tạp của hệ thống và cung cấp giao diện cho máy khách bằng cách sử dụng mà máy khách có thể truy cập hệ thống. Loại mẫu thiết kế này thuộc mẫu cấu trúc vì mẫu này thêm giao diện vào hệ thống hiện có để che giấu sự phức tạp của nó

Mẫu này liên quan đến một lớp duy nhất cung cấp các phương thức đơn giản hóa theo yêu cầu của máy khách và ủy quyền gọi các phương thức của các lớp hệ thống hiện có

Thực hiện

Chúng ta sẽ tạo một giao diện Shape và các lớp cụ thể triển khai giao diện Shape. Lớp mặt tiền ShapeMaker được định nghĩa là bước tiếp theo

Lớp ShapeMaker sử dụng các lớp cụ thể để ủy quyền các cuộc gọi của người dùng đến các lớp này. FacadePatternDemo, lớp demo của chúng tôi, sẽ sử dụng lớp ShapeMaker để hiển thị kết quả

Mẫu mặt tiền thường cần thiết khi có một số lượng lớn các lớp phụ thuộc lẫn nhau hoặc do các phần của mã không có sẵn. Nó được sử dụng như một lớp ngụy trang để che đậy sự phức tạp của một hệ thống lớn và do đó cung cấp một giao diện đơn giản cho máy khách. Nói cách khác, nó là một lớp bao bọc được sử dụng để ẩn các chi tiết triển khai

Mẫu mặt tiền được phân loại là mẫu thiết kế cấu trúc. Các mẫu thiết kế này là tất cả về thành phần Lớp và Đối tượng. Các mẫu tạo lớp cấu trúc sử dụng tính kế thừa để soạn giao diện. Các mẫu đối tượng cấu trúc xác định các cách để soạn các đối tượng để có được chức năng mới. [bởi Design Patterns giải thích đơn giản]

Hình trên là ví dụ hoàn hảo về mẫu Mặt tiền. Một khách hàng trong nhà hàng gọi đồ ăn từ thực đơn, có thể được mô tả trong nửa dòng. Đơn hàng vào bếp và một lúc sau đồ ăn mới về. Đơn giản. Khách hàng không muốn biết ai sẽ cắt thịt để nấu trong bao lâu và ai sẽ rửa bát đĩa sau đó. Khách hàng chỉ muốn ăn một bữa ăn ngon đáp ứng mong đợi. Do đó, thực đơn đóng vai trò là mặt tiền để giúp khách hàng dễ dàng hơn bằng cách tránh những phức tạp đến từ nhà bếp hoặc thậm chí các nhiệm vụ mà người phục vụ được giao thông qua quy trình này

Bước 1 — Từ khóa

Xác định từ khóa là công thức bí mật trong loạt hướng dẫn nhanh này. Phương pháp này đã giúp tôi thực sự hiểu về các mẫu thiết kế, mã hóa chúng trong đầu và hiểu được sự khác biệt giữa các mẫu thiết kế khác

  1. đơn giản hóa. Đây là mục tiêu của mẫu thiết kế này. Đơn giản hóa một hệ thống phức tạp
  2. Sự hạn chế. Đơn giản hóa thường đi kèm với “chi phí thiêng liêng”, hạn chế. Bằng cách đơn giản hóa mã, chúng tôi hạn chế khách hàng truy cập trái phép. Do đó, nó ngăn họ phạm những sai lầm khó nhận thấy trong một hệ thống con phức tạp.

Có sự đánh đổi giữa đơn giản hóa và hạn chế. Quá đơn giản hóa một hệ thống có nghĩa là nhà phát triển bị hạn chế quá mức, do đó ít tự do hơn mức cần thiết, điều này không phải lúc nào cũng là điều tốt. Mẫu Mặt tiền đơn giản hóa quá mức có nghĩa là có quá nhiều tự do khiến mẫu Mặt tiền không phù hợp. Tìm kiếm sự cân bằng tốt là điều tạo nên một mẫu Mặt tiền tốt, hữu ích và hiệu quả

Bước 2 - Sơ đồ

Sơ đồ cũng dựa trên ví dụ đã cho. Để đơn giản hóa sơ đồ này, chúng ta có thể tách thành ba phần

  1. Khách hàng. Khách hàng trong ví dụ này là khách hàng của một nhà hàng muốn đặt món ăn
  2. mặt tiền. Công việc của nó là có thể cung cấp cho khách hàng quyền truy cập đơn giản hơn vào nhiều hệ thống phụ phụ thuộc lẫn nhau được coi là phức tạp. Trong ví dụ này, đơn đặt hàng thực phẩm của khách hàng sẽ yêu cầu một loạt các lệnh gọi phương thức được sắp xếp theo trình tự cẩn thận của hai hệ thống con khác nhau [Người phục vụ và Nhà bếp]
  3. hệ thống con. Các hệ thống con được ẩn khỏi máy khách. Khách hàng cũng có thể không truy cập được. Máy khách không thể thao tác với bất kỳ hệ thống con nào mà một thay đổi mã đơn giản có thể gây nguy hiểm hoặc thậm chí phá vỡ các phần không xác định khác của chính hệ thống. Trong tình huống này, người phục vụ và nhà bếp phải thực hiện một loạt nhiệm vụ. Nhiệm vụ của một hệ thống con đôi khi phụ thuộc vào nhiệm vụ của hệ thống khác. Ví dụ, nhà bếp không thể chuẩn bị thức ăn nếu người phục vụ không mang món ăn đến nhà bếp. Người phục vụ không thể phục vụ khách hàng nếu thức ăn chưa được nấu chín

Bước 3 — Viết mã theo ví dụ

Tôi khuyên bạn nên sao chép từng lớp mã từ kho lưu trữ git “Andreas Poyias” của tôi hoặc các đoạn trích bên dưới [theo thứ tự được cung cấp] và dán mã đó vào bất kỳ trình soạn thảo C++ trực tuyến nào có sẵn như c++shell, jdoodle , onlineGDB và chạy . Sau đó đọc các bình luận hoặc mô tả dưới đây. Hãy dành thời gian của bạn, đọc kỹ nó [có nghĩa là một phút, không ít hơn và không nhiều hơn]

hệ thống con

Trong ví dụ này, hai hệ thống con là Waiter_Subsystem1Kitchen_Subsystem2. Thoạt nhìn, mỗi hệ thống con dường như độc lập vì chúng có thể thực hiện một số nhiệm vụ riêng lẻ. Nhưng điều này có đúng không?

#include 
using namespace std;
class Waiter_Subsystem1
{
public:
void writeOrder[] { cout

Chủ Đề