← Questões de Engenharia de Software

Engenharia de Software · VUNESP · 2021

Questão comentada de Engenharia de Software

Um certo padrão de projeto (design pattern) de criação utiliza métodos para criar objetos sem que o chamador precise especificar a classe exata desses objetos, e sem invocar seu construtor diretamente. O método que define a classe a ser instanciada pode estar especificado em uma interface e ser codificado em classes que a implementam, ou então ser implementado em uma classe base e opcionalmente redefinido (overriden) em uma classe filha. Esse padrão de projeto é conhecido como

Gabarito: C

O enunciado descreve um padrão de criação em que a classe concreta a ser instanciada fica escondida do cliente. Em vez de o chamador dar um new direto, ele pede a criação por meio de um método especial, e quem decide a implementação exata é a própria estrutura do padrão. Isso evita acoplamento desnecessário e deixa o sistema mais flexível para trocar ou incluir novas classes depois. Esse é justamente o espírito do Factory Method: um método-fábrica define a interface de criação, mas a decisão sobre qual objeto concreto será criado fica para as subclasses ou para a implementação específica. Em outras palavras, você sabe que vai receber um produto, mas não precisa saber qual classe exata o gerou. É um jeito elegante de dizer: "deixe a fábrica cuidar da parte chata". Por isso, o gabarito é a letra C. A descrição bate com a definição clássica do GoF: "definir uma interface para criar um objeto, mas deixar as subclasses decidirem qual classe instanciar". Já o detalhe de o método poder estar em uma interface ou ser sobrescrito em uma classe base reforça exatamente essa ideia de método de criação polimórfico. Não confunda com Template Method, que também pode ser definido em classe base e sobrescrito, mas ele organiza o esqueleto de um algoritmo, não a criação de objetos. Aqui o foco é criação sem expor o construtor nem a classe concreta ao cliente.

Continue treinando

Questões relacionadas