Questão nº 70
Questão de Boas Práticas e Padrões em TIC · FCC PMSP Analista TIC 2025 (nº 70)
A equipe de desenvolvimento de uma prefeitura está refatorando um sistema legado de atendimento ao público e precisa utilizar o padrão Factory Method para criar diferentes tipos de objetos relacionados a solicitações (como solicitações de manutenção, serviços ou emergências). A prática de implementação que reflete adequadamente o padrão Factory Method com foco em extensibilidade e encapsulamento é
- Acriar um método estático para instanciar objetos de solicitações com base em parâmetros fornecidos.
- Bdelegar a criação de objetos para um método de inicialização dentro da própria classe principal.
- Ccriar uma classe base que contenha a lógica para determinar o tipo de solicitação e retornar a instância apropriada.
- Dcentralizar a criação de objetos em uma única classe utilitária que contém métodos estáticos para cada tipo de solicitação.
- Eutilizar classes abstratas ou interfaces para definir o método de criação e implementá-lo nas subclasses específicas. (alternativa correta)
Resposta comentada
Gabarito Alternativa E
O padrão Factory Method é uma forma de criar objetos sem especificar a classe exata do objeto que será criado, deixando essa decisão para as subclasses.
- (A) Incorreta: Criar um método estático para instanciar objetos centraliza a lógica de criação, o que é característico de um Simple Factory ou Static Factory Method, mas não do Factory Method do GoF, que foca na extensibilidade via herança. Armadilha: Parece uma "fábrica", mas não permite que subclasses variem o tipo de objeto criado sem modificar o método estático central.
- (B) Incorreta: Delegar a criação para um método de inicialização dentro da própria classe principal não permite que subclasses alterem o tipo de objeto criado, mantendo a lógica de criação acoplada à classe original.
- (C) Incorreta: Criar uma classe base que contém a lógica para determinar o tipo de solicitação é mais próximo de um Simple Factory, onde a decisão é centralizada na classe base, e não delegada às subclasses para implementação.
- (D) Incorreta: Centralizar a criação de objetos em uma única classe utilitária com métodos estáticos é outra descrição de um Simple Factory ou Static Factory, que não oferece a flexibilidade de extensão por herança que o Factory Method proporciona.
- (E) Correta: Utilizar classes abstratas ou interfaces para definir o método de criação (o "Factory Method") e implementá-lo nas subclasses específicas é a forma correta. Isso permite que cada subclasse decida qual objeto concreto criar, promovendo extensibilidade (novos tipos de solicitações são adicionados com novas subclasses) e encapsulamento (a lógica de criação é isolada).
Fonte: FCC PMSP Analista TIC 2025 Analista de Planejamento e Desenvolvimento Organizacional - Tecnologia da Informação e Comunicação (Caderno Tipo 001). Reproduzida para fins de estudo.