A. This pattern builds a complex object using simple objects and using a step by step approach
B. This pattern refers to creating duplicate object while keeping performance in mind
C. This pattern enables developers to filter a set of objects using different criteria and chaining them in a decoupled way through logical operations
D. This pattern is used when we need to decouple an abstraction from its implementation so that the two can vary independently