Gabarito: c)
O enunciado fala de um padrão que permite construir produtos com diferentes representações, usando o mesmo processo de construção para criar variantes diferentes. Isso é a cara do padrão Builder.
O Builder é justamente usado para separar a construção de um objeto complexo da sua representação, permitindo que o mesmo processo de construção crie diferentes representações (no caso, os dois tipos de formulários de busca).
Vamos analisar as outras opções para entender melhor:
a) Abstract Factory: cria famílias de objetos relacionados, mas não foca em construir um produto passo a passo.
b) Bridge: separa uma abstração da sua implementação para que ambas possam variar independentemente, não é sobre construção passo a passo.
d) Mediator: gerencia a comunicação entre objetos, não tem a ver com construção de produtos.
e) Prototype: cria novos objetos clonando um protótipo, não sobre construir produtos com diferentes representações.
Portanto, o padrão que melhor se encaixa é o Builder.
O enunciado fala de um padrão que permite construir produtos com diferentes representações, usando o mesmo processo de construção para criar variantes diferentes. Isso é a cara do padrão Builder.
O Builder é justamente usado para separar a construção de um objeto complexo da sua representação, permitindo que o mesmo processo de construção crie diferentes representações (no caso, os dois tipos de formulários de busca).
Vamos analisar as outras opções para entender melhor:
a) Abstract Factory: cria famílias de objetos relacionados, mas não foca em construir um produto passo a passo.
b) Bridge: separa uma abstração da sua implementação para que ambas possam variar independentemente, não é sobre construção passo a passo.
d) Mediator: gerencia a comunicação entre objetos, não tem a ver com construção de produtos.
e) Prototype: cria novos objetos clonando um protótipo, não sobre construir produtos com diferentes representações.
Portanto, o padrão que melhor se encaixa é o Builder.