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.