Design Patterns: Facade
Thuộc nhóm: Structural
Tần suất sử dụng: Cao
Vấn đề đặt ra
Khi cấu trúc hóa một hệ thống thành các hệ thống con sẽ giúp làm giảm độ phức tạp của hệ thống. Một mục tiêu thiết kế thông thường là tối thiểu hóa sự giao tiếp và phụ thuộc giữa các hệ thống con. Một cách để đạt được mục tiêu này là đưa ra đối tượng facade, đối tượng này cung cấp một giao diện đơn giản để dễ dàng tổng quát hóa cho một hệ thống con hơn.
Chúng ta sẽ dùng mẫu Facade để giải quyết vấn đề này.
Định nghĩa
Mẫu Facade cung cấp một giao diện thống nhất cho một tập các giao diện trong một hệ thống con. Facade định nghĩa một giao diện ở mức cao hơn, giao diện này làm cho hệ thống con được sử dụng dễ dàng hơn.
c. Sơ đồ UML
Facade (MortgageApplication)
- Có thể xem như các lớp hệ thống con mà chịu trách nhiệm đối với các yêu cầu đến nó.
- Trình khác uỷ nhiệm yêu cầu tới một đối tượng của hệ thống con Subsystem classes (Bank, Credit, Loan)
- Cài đặt chức năng của hệ thống con
- Giữ handle làm việc bằng đối tượng Facade
- Không có một kiến thức gì về Facade và giữ tham chiếu đến nó.
Mẫu liên quan
Abstract Factory có thể được sử dụng cùng với Facade để cung cấp một giao diện cho việc tạo hệ thống con một cách độc lập hệ thống con. Abstract Factory cũng có thể được sử dụng như một sự thay thế cho Facade để ẩn các lớp nền đặc biệt.
Mediator tương tự như Facade ở chổ trừu tượng chức năng của một lớp đã tồn tại.Tuy nhiên mục đích của Mediator là trừu tượng một cách chuyên quyền sự giao tiếp giữa đối tượng cộng tác, thường chức năng trung tâm không thuộc về bất kỳ đối tượng cộng tác nào.Một đối tượng cộng tác với Mediator được nhận và giao tiếp với mediator thay vì giao tiếp với nhau một cách trực tiếp. Trong hoàn cảnh nào đó, Facade chỉ đơn thuần là trừu tượng giao diện cho một một đối tượng hệ thống con để làm nó dễ sử dụng hơn, nó không định nghĩa một chức năng mới và lớp hệ thống con không hề biết gì về nó.
Thường thì một đối tượng Facade là đủ. Do đó đối tượng Facade thường là Singleton.