Prévia do material em texto
Factory
O padrão Factory é um dos padrões de design criacionais que se destaca pela sua
capacidade de criar objetos de forma flexível e escalável. Ele permite a criação de
objetos sem especificar a classe exata do objeto que será criado, encapsulando a
lógica de instância dentro de uma classe de fábrica. O padrão Factory é especialmente
útil quando o sistema precisa ser extensível e os objetos a serem criados podem
variar. Abaixo, apresento uma série de perguntas sobre o padrão Factory, incluindo
uma pergunta discursiva e três de múltipla escolha.
Pergunta Discursiva:
1. O que é o padrão Factory, quais são suas principais variações e como ele
pode ser implementado em um sistema? Forneça um exemplo prático de
uso do padrão Factory em um contexto de desenvolvimento de software.
Resposta: O padrão Factory é um padrão de design criacional que fornece
uma maneira de criar objetos sem especificar a classe exata do objeto que
será instanciado. Ele encapsula a lógica de criação de objetos em uma classe
de fábrica, permitindo que o sistema decida qual classe de objeto instanciar
em tempo de execução. Isso é útil em situações onde o sistema precisa ser
flexível e capaz de lidar com diferentes tipos de objetos que compartilham
uma interface comum.
Existem duas variações principais do padrão Factory: o Factory Method e a
Abstract Factory. O Factory Method é um método definido em uma classe
base que é responsável por instanciar um objeto, enquanto a Abstract
Factory fornece uma interface para criar famílias de objetos relacionados
sem especificar suas classes concretas.
A implementação do padrão Factory geralmente envolve a criação de uma
interface ou classe abstrata para os produtos, classes concretas que
implementam essa interface e uma classe de fábrica que encapsula a lógica
de criação dos objetos. Abaixo está um exemplo simples em Java que
demonstra o uso do padrão Factory:
java
// Interface do Produto public interface Vehicle { void
drive(); } // Classe concreta do Produto public class Car
implements Vehicle { @Override public void drive() {
System.out.println("Driving a car."); } } // Outra
classe concreta do Produto public class Bike implements
af://n4537
af://n4540
Vehicle { @Override public void drive() {
System.out.println("Riding a bike."); } } // Classe de
Fábrica public class VehicleFactory { public static
Vehicle createVehicle(String type) { switch
(type.toLowerCase()) { case "car":
return new Car(); case "bike":
return new Bike(); default: throw
new IllegalArgumentException("Unknown vehicle type.");
} } } // Uso do padrão Factory public class Main {
public static void main(String[] args) { Vehicle
myCar = VehicleFactory.createVehicle("car");
myCar.drive(); // Saída: Driving a car. Vehicle
myBike = VehicleFactory.createVehicle("bike");
myBike.drive(); // Saída: Riding a bike. } }
Neste exemplo, a interface Vehicle define o contrato para os produtos, e as
classes Car e Bike são implementações concretas desse contrato. A classe
VehicleFactory contém um método estático createVehicle, que recebe
um tipo e retorna a instância correspondente. Isso encapsula a lógica de
criação e permite que o cliente obtenha o tipo desejado de veículo sem
precisar saber sobre as classes concretas.
Um exemplo prático do uso do padrão Factory pode ser encontrado em
sistemas de gerenciamento de pedidos, onde diferentes tipos de pedidos
(por exemplo, pedidos de produtos físicos, pedidos digitais, etc.) podem ser
criados. O padrão Factory permite que o sistema crie objetos de pedido sem
precisar conhecer os detalhes de implementação de cada tipo de pedido,
facilitando a manutenção e a expansão do sistema.
Perguntas de Múltipla Escolha:
2. Qual é o principal benefício do padrão Factory?
A) Permitir a criação de objetos com base em condições externas.
B) Reduzir o número de classes em um sistema.
C) Facilitar o teste de unidades de classes concretas.
D) Encapsular a lógica de criação de objetos e aumentar a
flexibilidade do código.
Resposta: D) Encapsular a lógica de criação de objetos e aumentar a
flexibilidade do código.
3. Qual das seguintes afirmações é verdadeira sobre o padrão Factory?
A) O padrão Factory sempre cria instâncias de uma única classe.
af://n4551
B) O padrão Factory permite que o código do cliente dependa de
classes concretas.
C) O padrão Factory pode ser usado para desacoplar a criação de
objetos de sua implementação.
D) O padrão Factory é um padrão de design que não pode ser usado
em linguagens tipadas estaticamente.
Resposta: C) O padrão Factory pode ser usado para desacoplar a criação de
objetos de sua implementação.
4. Qual é uma variação do padrão Factory que permite a criação de famílias
de produtos relacionados?
A) Singleton
B) Builder
C) Abstract Factory
D) Prototype
Resposta: C) Abstract Factory.
Essas perguntas cobrem os aspectos fundamentais do padrão Factory, incluindo
sua definição, benefícios, variações e aplicações práticas no desenvolvimento de
software.