In this article I would like to explore the Facade design pattern. The actual
pronunciation is fu'saad. The dictionary meaning of the word Façade is "A showy
misrepresentation intended to conceal something unpleasant"
Now let us enter the challenge.
Challenge
You are working on a database application. Frequently you need to execute UPDATE
and DELETE SQL queries. Each time there is a need to create the SqlConnection
and SqlCommand class, assign the connection to command and execute the query.
The series of activities looks like:
SqlConnection
connection = new
SqlConnection("connection string" );
SqlCommand command =
new SqlCommand();
command.Connection = connection;
command.CommandText = "UPDATE Customer SET
Processed=1";
command.ExecuteNonQuery();
You need to repeat the same code wherever execute queries are required. How to
make this code better?
Definition
"Provide a unified interface to a set of interfaces in a system. Facade defines
a higher-level interface that makes the subsystem easier to use."
Implementation
Using Façade, we can improve the situation. We can find only the query is
different in each case – the parameters like connection string is common for the
entire application.
SQLFacade.ExecuteSQL("UPDATE
query here..");
After using the Façade the code will look like above.
The complicated code is being pulled to the background SQLFacade class.
namespace
FacadePattern
{
public class
SQLFacade
{
public static
bool ExecuteSQL(string
sql)
{
SqlConnection connection =
new SqlConnection("connection
string");
SqlCommand command =
new SqlCommand();
command.Connection = connection;
command.CommandText = sql;
command.ExecuteNonQuery();
return true;
}
}
}
Façade pattern makes code better as depicted in the image below:
Summary
In this article we have seen how to use the Façade pattern to improve our code.
It is similar to the use of reusable functions and it pulls out the
complications and provides an easier interface for use. The associated code
contains the classes we have discussed.
Resources
Here are some useful related resources: