Facade

Khái niệm:

Cung cấp một interface thống nhất cho một tập các interface trong một hệ thống con (subsystem). Façade định nghĩa một interface mức cao làm cho hệ thống con dễ dàng sử dụng hơn.

Mức độ sử dụng: cao

UML Class Diagram

facade_class_diagram

Những lớp và/hoặc đối tượng trong mẫu thiết kế này:

Façade (MortgageApplication):

     + biết các lớp của hệ thống con nào chịu trách nhiệm cho một request.

     + ủy thác các request của client để thích hợp với các đối tượng của hệ thống con.

Subsystem classes (Bank, Credit, Loan):

     + thực thi chức năng của hệ thống con

     + xử lý công việc được chỉ định bởi đối tượng façade

     + không biết về façade và không giữ tham chiếu đến nó

Façade: khi nào sử dụng và sử dụng ở đâu

Một façade là một lớp cung cấp một interface (một tập hợp các phương thức và thuộc tính) giúp client dễ sử dụng các lớp và đối tượng hơn trong một hệ thống con phức tạp. Mẫu thiết kế façade là một mẫu thiết kế đơn giản và có thể giống như là không đáng kể. Tuy vậy, ảnh hưởng của nó là rất đáng kể ví nó là một trong những mẫu thiết kế được sử dụng thường xuyên nhất trong các hệ thống được xây dựng trên mô hình 3-tier.

Mục đích của Façade là cung cấp một interface ở mức cao làm cho hệ thống con hoặc toolkit dễ sử dụng hơn cho client. Trong một ứng dụng 3-tier, presentation layer là client. Những lời gọi vào business layer thực hiện thông qua một service layer được định nghĩa tốt (well defined). service layer này, hoặc façade làm ẩn đi sự phức tạp của các đối tượng business và các tương tác của chúng.

Façade thường được sử dụng kết hợp với các mẫu thiết kế khác. bản thân các façade thường được thực thi như single abstract factories. Tuy nhiên, bạn có thể sử dụng các phương thức tĩnh trên Façade để có hiệu quả tương tự.

Demo

FacadeRealWorldClassDiagram

http://cid-d0e5ddf023bf4324.office.live.com/embedicon.aspx/.Public/Design%20Pattern/FacadeRealWorld.zip

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s