When a subsystem consisting of a set of objects is more complicated than
strictly necessary to get the job done, it can be cumbersome to use
effectively. But removing unnecessary features might be impossible.
Under such circumstances, consider using a Façade object that implements only
the interface’s essential elements. Limiting what is possible has a second
positive effect: the hidden interface is no longer entirely public and can
likely diverge and deprecate without as much impact.
The only difference between Façade and Adapter is that the adaptation is
for the user, not the code. It is to provide a more straightforward API or an
API for a low-knowledge use case. It’s the objectification of domain-expert
knowledge.
It can also be seen as a pattern-like version of interface segregation.
I’ve seen this pattern played out and referred to as helper-object or
high-level-interface.