Facade:
Key takeaways : ( from journaldev article by Pankaj Kumar)
- Facade pattern is more like a helper for client applications
- Facade pattern can be applied at any point of development, usually when the number of interfaces grow and system gets complex.
- Subsystem interfaces are not aware of Facade and they shouldn’t have any reference of the Facade interface
- Facade pattern should be applied for similar kind of interfaces, its purpose is to provide a single interface rather than multiple interfaces that does the similar kind of jobs
Facade class diagram:
Adapter:
- It is a structural pattern
- It is useful to work with two incompatible interfaces
- It makes things work after they're designed
Class diagram of Adapter:
You can find more details about Adapter in this SE post:
Difference between Bridge pattern and Adapter pattern
Key differences:
- Facade defines a new interface, whereas Adapter uses an old interface. Adapter makes two existing interfaces work together as opposed to defining an entirely new one
- Adapter and Facade are both wrappers; but they are different kinds of wrappers. The intent of Facade is to produce a simpler interface, and the intent of Adapter is to design to an existing interface
Have a look at sourcemaking article too for better understanding.