Introdução:
Seja bem-vindo devs ao segundo post da série padrões de design em projetos de software. Neste artigo, vamos aprofundar nosso conhecimento em mais um padrão de design amplamente utilizado: o padrão de design Factory. Assim como o Adapter, o Factory é um padrão de design criacional que proporciona uma solução elegante para a criação de objetos em uma aplicação. Vamos explorar em detalhes como esse padrão funciona e descobrir suas diversas aplicações em projetos de software.
Confira a lista de todos os posts da série:
- #1 Padrão de design - adapter
- #2 Explorando o padrão de design - factory
- #3 IA na geração de conhecimento - reflexões
Visão geral:
O padrão de design Factory é utilizado quando precisamos criar objetos de uma mesma família, porém com diferentes implementações, de forma flexível e sem a necessidade de especificar explicitamente as classes concretas. Ele define uma interface para a criação de objetos, delegando a decisão sobre qual objeto concreto instanciar para as subclasses.
Quando utilizar o padrão Factory:
O padrão Factory é útil em diversas situações, como por exemplo:
- Quando queremos encapsular a lógica de criação de objetos em uma classe específica, ao invés de espalhá-la por toda a aplicação.
- Quando desejamos criar objetos de uma mesma família, mas com diferentes implementações, de forma transparente para o cliente.
- Quando queremos desacoplar o código cliente das classes concretas, permitindo a fácil extensão e adição de novos tipos de objetos.
Como funciona o padrão Factory:
O padrão Factory é baseado em um método de fábrica (factory method) definido em uma classe abstrata ou interface. As subclasses concretas são responsáveis por implementar esse método e retornar uma instância do objeto desejado. Dessa forma, o código cliente pode utilizar a interface da classe abstrata ou interface para criar objetos sem conhecer as implementações concretas.
Exemplo de Factory utilizando a linguagem Python:
Vamos agora ver um exemplo prático de como podemos aplicar o padrão Factory em uma aplicação utilizando a linguagem Python. Suponha que temos um sistema de gerenciamento de produtos, onde temos diferentes tipos de produtos (por exemplo, eletrônicos, móveis, vestuário) e cada tipo de produto possui uma forma específica de criação. Podemos criar uma classe abstrata chamada ProductFactory que define o método factory_method() responsável pela criação dos objetos. Em seguida, podemos implementar subclasses concretas dessa classe abstrata para cada tipo de produto, onde cada uma delas irá implementar o método factory_method() de acordo com as características do respectivo produto.
from abc import ABC, abstractmethod class ProductFactory(ABC): @abstractmethod def factory_method(self): pass class ElectronicsFactory(ProductFactory): def factory_method(self): return ElectronicsProduct() class FurnitureFactory(ProductFactory): def factory_method(self): return FurnitureProduct() class ClothingFactory(ProductFactory): def factory_method(self): return ClothingProduct() # Uso do Factory electronics = ElectronicsFactory().factory_method() furniture = FurnitureFactory().factory_method() clothing = ClothingFactory().factory_method()
Conclusão:
O padrão de design Factory é uma ferramenta poderosa para a criação de objetos em uma aplicação, proporcionando flexibilidade e desacoplamento do código cliente. Ele permite a criação de objetos de uma mesma família de forma transparente, facilitando a manutenção e extensão do código. Ao aplicar esse padrão corretamente, podemos obter um código mais modular, flexível e de fácil manutenção.
Gostaria de saber também a sua opinião a respeito desse assunto, fica aqui meu contato na rede matrix e/ou se preferir sinta-se à vontade para me enviar um e-mail em resposta a qualquer questão nesse post. Se você quiser criptografá-lo, aqui está minha chave pgp
Que a força esteja com você.
Published May 12, 2023 by f0rmig4