DESIGN PATTERNS

ABSTRACT FACTORY

&

FACADE

O que é

design patterns ?

Design patterns, traduzido Padrões de projetos, são soluções para problemas comuns em projetos de software e que independem da linguagem utilizada.

CATEGORIAS

  • Criacionais
  • Estruturais
  • Comportamentais

Criacionais

Fornecem mecanismos de criação de objetos que aumentam a flexibilidade e a reutilização de código.

Estruturais

Explicam como montar objetos e classes em estruturas maiores, enquanto ainda mantém as estruturas flexíveis e eficientes.

Comportamentais

Cuidam da comunicação eficiente e da assinalação de responsabilidades entre objetos.

ABSTRACT FACTORY

Este padrão permite a criação de famílias de objetos relacionados ou dependentes por meio de uma única interface e sem que a classe concreta seja especificada.

Imagine q estamos desenvolvendo um aplicativo que contenha botões e inputs que precisam ter estilos diferentes para cada sistema operacional.

A primeira coisa que o padrão Abstract Factory sugere é declarar explicitamente interfaces para cada produto distinto da família.

O próximo passo é declarar a fábrica abstrata...
Que nada mais é do que uma interface com uma lista de métodos de criação para todos os produtos que fazem parte da família

Vantagens

  • Você pode ter certeza que os produtos que você obtém de uma fábrica são compatíveis entre si.
  • Princípio de responsabilidade única.
  • Princípio aberto/fechado, ou seja, você pode introduzir novas variantes de produtos sem quebrar o código cliente existente.

Desvantagens

  • Dificuldade maior em adicionar novos tipos de produtos.
  • O código pode tornar-se mais complicado do que deveria ser, uma vez que muitas novas interfaces e classes são introduzidas junto com o padrão.

FACADE

É um padrão de projeto estrutural que fornece uma interface simplificada para uma biblioteca, um framework, ou qualquer conjunto complexo de classes.

Imagine que estamos desenvolvendo uma loja virtual.

Para realizar o pedido basico, precisamos:

  • Verificar o cliente
  • Buscar o produto
  • Criar o pedido

Fazer o pedido sem ultilizar o facade

Fazer o pedido ultilizando o facade

Fazer o pedido ultilizando o facade

Vantagens

  • Isola a complexidade do código.
  • Facilita a manutenção do sistema.
  • Cria pontos de entrada para camadas da aplicação e serviços de terceiros.

Desvantagens

  • Uma classe que ultiliza o facade pode se tornar um “objeto deus” acoplado a todas as classes de uma aplicação.