Fala, meus consagrados! Beleza?
Em um artigo anterior, estudamos que padrões de projetos orientados a objetos, também conhecidos como Design Patterns, são soluções reutilizáveis e elegantes para problemas comuns encontrados no projeto de software orientado a objetos. Eles fornecem abordagens testadas e comprovadas para a criação de estruturas de código que são flexíveis, escaláveis e fáceis de entender. Os padrões de projetos não são códigos prontos, mas sim diretrizes que podem ser adaptadas e aplicadas de acordo com as necessidades específicas de um projeto.
Do grupo de padrões de projetos, o grupo mais citado em concursos são os Padrões GoF (Gang of Four). Ao todo, são um conjunto de 23 padrões de projetos catalogados no livro “Design Patterns: Elements of Reusable Object-Oriented Software”, escrito por Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, quatro autores (daí o apelido Gang of Four).
Os padrões GoF são categorizados em três grupos principais:
- Padrões de Criação: tratam do processo de criação de objetos, fornecendo maneiras de instanciar objetos de forma mais flexível e controlada;
- Padrões Estruturais: lidam com a composição de classes e objetos para formar estruturas maiores e mais complexas; e
- Padrões Comportamentais: se concentram nas maneiras como classes e objetos interagem e como responsabilidades são distribuídas.
Figura 1: Resumo dos grupos dos Padrões GoF.
O foco do artigo é estudarmos os Padrões de Criação. Eles abstraem e/ou adiam o processo de criação dos objetos e fornecem mecanismos de criação de objetos que aumentam a flexibilidade e a reutilização do código existente.
Os Padrões de Criação são compostos pelos seguintes padrões:
- Factory Method: cria uma instância de várias classes derivadas;
- Abstract Factory: cria uma instância de várias famílias de classes;
- Builder: separa a construção do objeto de sua representação;
- Prototype: uma instância totalmente inicializada para ser copiada ou clonada; e
- Singleton: uma classe da qual apenas uma única instância pode existir.
Figura 2: Padrões de Criação.
A dica de memorização é:
- Uma fábrica (Factory Method) abstrata (Abstract Factory) constrói (Builder) um protótipo (Prototype) único (Singleton).
Figura 3: Dica de memorização dos Padrões de Criação.
O padrão Factory Method cria uma instância de várias classes derivadas e fornece uma interface para criar objetos em uma superclasse, mas permite que as subclasses alterem o tipo de objetos que serão criados.
O padrão em questão fornece uma abordagem para criar objetos de uma maneira flexível e controlada, permitindo que uma classe delegue a responsabilidade de criar instâncias de objetos para suas subclasses. Isso promove a abstração e o desacoplamento entre o código que utiliza as classes e o processo de criação de objetos.
Figura 4: Diagrama de classes para o padrão Factory Method.
O padrão Abstract Factory cria uma instância de várias famílias de classes e permite que se produza famílias de objetos relacionados, sem ter que especificar suas classes concretas.
Esse padrão criacional fornece uma interface para criar famílias de objetos relacionados ou dependentes, sem especificar suas classes concretas. Ele é projetado para lidar com a criação de objetos complexos que têm relações entre si, garantindo que os objetos criados sejam compatíveis entre si.
Figura 5: Diagrama de classes para o padrão Abstract Factory.
O padrão Builder permite:
- Construir objetos complexos passo a passo; e
- Que se produza diferentes tipos e representações de um objeto usando o mesmo código de construção.
O padrão separa a construção de um objeto complexo de sua representação, permitindo que o mesmo processo de construção possa criar diferentes representações do objeto. Esse padrão é especialmente útil quando a criação de um objeto envolve múltiplos passos e configurações, ou quando se deseja construir diferentes variações do mesmo objeto.
Figura 6: Esquema de criação de objetos com o padrão Builder.
O padrão Prototype permite:
- Criar uma instância totalmente inicializada para ser copiada ou clonada; e
- Copiar objetos existentes sem fazer seu código ficar dependente de suas classes.
O padrão Prototype visa criar novos objetos duplicando um objeto existente (protótipo), evitando assim a necessidade de criar uma nova instância a partir do zero. Isso é particularmente útil quando a criação de um novo objeto é complexa ou custosa, ou quando objetos semelhantes com pequenas variações precisam ser criados.
Figura 7: Diagrama de classes para o padrão Protype.
Por último e o mais cobrado em concursos é o padrão Singleton. Esse padrão permite criar uma classe da qual apenas uma única instância pode existir e garante que uma classe tenha apenas uma instância enquanto provê um ponto de acesso global para essa instância.
O padrão Singleton garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a essa instância. Ele é utilizado quando se deseja ter uma única instância de uma classe em todo o programa, como em situações onde essa classe representa uma configuração, uma conexão de banco de dados, ou quando é importante compartilhar um recurso único entre diferentes partes do sistema.
Figura 8: Diagrama de classes para o padrão Singleton.
Espero que tenham gostado!
Forte abraço e até a próxima jornada!
_________________________
Professor Rogerão Araújo
Clique nos links abaixo:
Receba gratuitamente no seu celular as principais notícias do mundo dos concursos!
Clique no link abaixo e inscreva-se gratuitamente:
Participe da conversa