O padrão de projeto Factory Method é uma parte fundamental do mundo da programação orientada a objetos. Ele pertence à categoria de padrões de criação e oferece uma solução elegante para o problema de criar objetos de forma flexível e encapsulada. Neste artigo, exploraremos em detalhes o Factory Method em TypeScript, incluindo sua motivação, estrutura, implementação e exemplos práticos em TypeScript.
O Factory Method é usado quando queremos criar objetos, mas não sabemos suas classes exatas no momento da criação. Ele nos permite encapsular a lógica de criação em um método separado, tornando nosso código mais flexível e menos acoplado.
Imagine um cenário em que você está desenvolvendo um aplicativo de logística. Você precisa criar diferentes tipos de veículos, como carros, caminhões e bicicletas, mas não sabe qual tipo de veículo será necessário em tempo de compilação. Como você cria esses veículos de forma flexível?
O Factory Method oferece uma solução elegante. Em vez de criar objetos diretamente com operadores new, você define um método de fábrica para criar objetos. Cada classe concreta derivada da fábrica implementa esse método de criação, permitindo que você instancie objetos específicos.
A estrutura do Factory Method consiste em quatro elementos principais:
// Produto Abstrato
class Veiculo {
acelerar() {}
parar() {}
}
// Produto Concreto
class Carro extends Veiculo {
// Implementação específica para Carro
}
// Fábrica Abstrata
class FabricaDeVeiculos {
criarVeiculo() {}
}
// Fábrica Concreta
class FabricaDeCarros extends FabricaDeVeiculos {
criarVeiculo() {
return new Carro();
}
}
O Factory Method é aplicável em situações em que:
Prós:
Contras:
// Produto Abstrato
abstract class Veiculo {
abstract acelerar(): void;
abstract parar(): void;
}
// Produto Concreto
class Carro extends Veiculo {
acelerar() {
console.log('Carro acelerando.');
}
parar() {
console.log('Carro parando.');
}
}
// Fábrica Abstrata
abstract class FabricaDeVeiculos {
abstract criarVeiculo(): Veiculo;
}
// Fábrica Concreta
class FabricaDeCarros extends FabricaDeVeiculos {
criarVeiculo() {
return new Carro();
}
}
// Cliente
const fabrica = new FabricaDeCarros();
const meuCarro = fabrica.criarVeiculo();
meuCarro.acelerar();
meuCarro.parar();
Que tal aplicar o padrão Factory Method em um projeto próprio? Crie um cenário em que você precise criar objetos de tipos desconhecidos em tempo de execução e utilize este padrão para resolvê-lo.
O Factory Method em JavaScript oferece flexibilidade e facilita a criação de objetos em cenários em que a escolha do tipo de objeto é determinada dinamicamente. Incorporar esse padrão em seu código pode torná-lo mais modular e extensível, facilitando a manutenção e a evolução de suas aplicações.
Hashtags:
#FactoryMethod #TypeScript #PadroesDeProjeto #DesenvolvimentoDeSoftware #ProgramacaoOrientadaAObjetos

