Simplifying Subsystems with the Façade Pattern
In the last chapter, we used the Adapter pattern to convert incompatible classes into shared interfaces that a client can use interchangeably. In this chapter, we’ll stay on the topic of client simplification by using the Façade pattern to build a… well, a façade or decorative wall between the client and your more complex, interdependent systems. Think of unlocking your phone using thumbprint recognition – when you (the client) touch your fingertip to the phone you get a nice interface that tells you the security check is processing (the façade), but underneath, the phone’s software is cranking away at the complicated process of verifying that you’re a living, breathing human!
The Façade pattern comes in handy quite a bit because all but the simplest of programs have underlying subsystems. You can use it to provide a unified, high-level interface for virtually any block...