A provider is a remote resource such as a server or database. Worse, the resource is not object-oriented. We don't want to distribute knowledge of the provider throughout the client.
Introduce a gateway that implements an object-oriented API while managing the connection to the remote resource: