Which of the following describes the adapter pattern correctly?
a. This pattern builds a complex object using simple objects and using a step by step approach.
b. This pattern refers to creating a duplicate object while keeping performance in mind.
c. This pattern works as a bridge between two incompatible interfaces.
d. This pattern is used when we need to decouple an abstraction from its implementation so that the two can vary independently.