façade pattern
The façade pattern is an object-oriented design pattern.
A façade is an object that provides a simplified interface to a larger body of code, such as a class library. A façade can:
- make a software library easier to use and understand, since the façade has convenient methods for common tasks;
- make code that uses the library more readable, for the same reason;
- reduce dependencies of outside code on the inner workings of a library, since most code uses the façade, thus allowing more flexibility in developing the system;
- wrap a poorly designed collection of APIs with a single well-designed API (As per task needs).
An Adapter is used when our wrapper must respect a particular interface and must support a polymorphic behavior. On the other hand, a façade is used when one wants an easier/simpler interface to work with.
Structure
- Façade
- The façade class interacts Packages 1, 2 & 3 with the rest of the application.
- Clients
- The objects using the Façade Pattern to access resources from the Packages.
- Packages
- Software library / API collection accessed through the Façade Class.
Examples
Java
The following example hides the parts of a complicated calendar API behind a more user friendly façade. The output is:
Date: 1980-08-20 20 days after: 1980-09-09
<source lang="java"> import java.text.*; import java.util.*;
/** "Facade" */ class UserfriendlyDate {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
public UserfriendlyDate (String isodate_ymd) throws ParseException {
Date date = sdf.parse(isodate_ymd);
cal.setTime(date);
}
public void addDays (int days) {
cal.add (Calendar. DAY_OF_MONTH, days);
}
public String toString() {
return sdf.format(cal.getTime());
}
}
/** "Client" */ class FacadePattern {
public static void main(String[] args) throws ParseException
{
UserfriendlyDate d = new UserfriendlyDate("1980-08-20");
System.out.println ("Date: " + d.toString());
d.addDays(20);
System.out.println ("20 days after: " + d.toString());
}
} </source>
External links
- Description from the Portland Pattern Repository
- Description from the Net Objectives Repository
- Facade pattern discussion with 1-page examples
| Design patterns in Design Patterns |
|---|
|
Creational: Abstract factory • Builder • Factory • Prototype • Singleton Structural: Adapter • Bridge •
Composite • Decorator • Façade • Flyweight • Proxy Behavorial: Chain of responsibility • Command • Interpreter • Iterator • Mediator • Memento • Observer • State • Strategy • Template method • Visitor |
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)






