Façade

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.

“Okay, calm down. Let me walk you through this.”