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