Eae gente bonita, beleza?
Continuando nossos estudos e abrindo mais uma série de conteúdo por aqui, hoje irei falar sobre o design pattern Factory.
O que é um design pattern?
Começando do começo, um design pattern ou padrão de projeto é uma solução conhecida para um problema conhecido. Existem vários tipos de design patterns para se aprender e conhecer. Você não precisa saber todos de cabeça e cada detalhe de implementação, porém é importante que você conheça a existência e o problema que ele soluciona para saber o que e onde procurar. O site Refactoring Guru contém uma lista de padrões de projetos e suas explicações em português, recomendo muito que tenha ele salvo nos seus favoritos.
É muito importante saber trabalhar e conhecer padrões de projetos, pois assim nós usamos formas conhecidas de se trabalhar e deixamos de reinventar a roda, além de mantermos uma codebase mais organizada e fácil de se dar manutenção no futuro.
Tipos de padrões?
Existem tipos de padrões? Sério? Sim!! Como dito anteriormente, um padrão de projeto é uma solução conhecida para um problema conhecido e bom, existem vários tipos de problemas na área de T.I., na verdade, não falta problema. Então vou te apresentar os tipos de padrões de projetos.
Criacionais: Os padrões criacionais fornecem mecanismos de criação de objetos que aumentam a flexibilidade e a reutilização de código.
Estruturais: Os padrões estruturais explicam como montar objetos e classes em estruturas maiores, enquanto ainda mantém as estruturas flexíveis e eficientes.
Comportamentais: Os padrões comportamentais cuidam da comunicação eficiente e da atribuição de responsabilidades entre objetos.
O Padrão Factory
Bom agora que você já sabe o que é um padrão de projeto ou design pattern, vamos falar um pouco sobre o padrão em questão, o padrão Factory.
O padrão Factoryé um padrão criacional, ou seja, é uma forma de criar objetos. A tradução de Factory é fábrica, então não tem como ser mais claro que isso, um padrão usado para criar coisas.
A ideia do padrão Factoryé centralizar as dependências em um só lugar e expor apenas o que precisa ser realmente usado. Vamos a um exemplo. Eu crio um Factory para criar um UserService. Bom o que o userService precisa? De um repository para se comunicar com o banco de dados e das informações do banco para o repository se conectar e fazer as operações necessárias. Para fazer isso nós criamos uma Factory que busca e centraliza todas essas dependências e expõe o userService prontinho para usarmos como no exemplo abaixo.
class UserFactory {
static async createInstance() {
const db = new Database({ connectionString: 'mongodb://localhost:27017/test' }); // Criando conexão com o banco
const dbConnection = await db.connect(); // Conectando ao banco
const userRepository = new UserRepository({ dbConnection }); // Passando conexão do banco para o repository, pois o mesmo depende da conexão
const userService = new UserService({ userRepository }); // Passando o repository para o service, pois o mesmo depende do repository
return userService; // Retornar o service pronto para uso!
}
}
Espero que tenha ficado claro o que é uma Factory para você! Se tiver alguma dúvida e sugestão, fique a vontade para comentar. Em breve trarei mais padrões de projetos para o blog.
Referências
Se chegou até aqui, me segue la nas redes vizinhas.
Top comments (1)
Boa Cristian Magalhães,
Muito top, valeu por compartilhar
Obrigado.