Authors: Chetan Giridhar and Rahul Verma
facade(n): the face or front of a building
As per wikipedia:
“The facade pattern is a software engineering design pattern commonly used with Object-oriented programming. (The name is by analogy to an architectural facade.). A facade is an object that provides a simplified interface to a larger body of code, such as a class library.”
Façade pattern falls under the hood of Structural Design Patterns. Façade is nothing but an interface that hides the inside details and complexities of a system and provides a simplified “front end” to the client. With façade pattern, client can work with the interface easily and get the job done without being worried of the complex operations being done by the system.
An important point to understand about the Facade pattern is that it provides a simplified interface to a part of the system, thereby providing ease-of-use for a sub-set of the functionality rather than complete functionality. Beauty of this is that the underlying classes are still available to the client if the client wants additional features/greater control and customization that are not provided in the current context of Facade pattern implementation.