In different implementations and approaches, Facade may resemble either an Adapter or an Abstract Factory.
Its goal seems straightforward—to simplify interacting with another class or a family of classes:
- When we think about simplifying, we usually think of the Adapter design pattern
- When we think about the family of classes, we usually think of an Abstract Factory
That's where all the confusion usually comes from. To better understand it, let's go back to the example we used for the Abstract Factory design pattern.