Facade Pattern

The facade pattern (or façade pattern) is a software design pattern commonly used with object-oriented programming. The name is by analogy to an architectural facade.

What is Facade Design Pattern ?

A facade is an object that provides a simplified interface to a larger body of code, such as a class library.

According to GoF Facade design pattern is:

Provide a unified interface to a set of interfaces in a subsystem. Facade Pattern defines a higher-level interface that makes the subsystem easier to use.

Advantages:

  • A facade can make a software library easier to use, understand and test, since the facade has convenient methods for common tasks.
  • make 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 facade, thus allowing more flexibility in developing the system
  • wrap a poorly designed collection of APIs with a single well-designed API.

The Facade design pattern is often used when a system is very complex or difficult to understand because the system has a large number of interdependent classes or its source code is unavailable. This pattern hides the complexities of the larger system and provides a simpler interface to the client. It typically involves a single wrapper class which contains a set of members required by client. These members access the system on behalf of the facade client and hide the implementation details.

When to use Facade Design Pattern ?

The facade pattern is typically used when:

  • a simple interface is required to access a complex system;
  • the abstractions and implementations of a subsystem are tightly coupled;
  • need an entry point to each level of layered software; or a system is very complex or difficult to understand.

Implementation :

Facade-Sequence-Diagram

Inventory.java

Payment.java

OrderFacade.java

Client.java

Drawbacks/Consequences:

  • In Facade design pattern the subsystnem methods are connected to the Façade layer. In future development if structure of the subsystem changes then it will require subsequent change to the Façade layer and client methods.

 

Reference :https://en.wikipedia.org/wiki/Facade_pattern

   

Comments are closed