DEV Community

Cover image for [Design Patterns] Trabalhando com Factories
Cristian Magalhães
Cristian Magalhães

Posted on • Edited on

[Design Patterns] Trabalhando com Factories

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!
    }
}
Enter fullscreen mode Exit fullscreen mode

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.

thank you dog

Top comments (1)

Collapse
 
jangelodev profile image
João Angelo

Boa Cristian Magalhães,
Muito top, valeu por compartilhar
Obrigado.