Por que eu devo ler este artigo: Vamos falar hoje sobre os padrões “Gof”, dividindo eles pelas suas famílias e pelo seu atributo, vamos ver também uma breve descrição desses padrões para podermos ter uma pequena idéia do que cada um pode fazer para solucionar um determinado problema.

Vamos lá, já vimos no artigo sobre Design Patterns como surgiu o conceito dos Padrões de projetos, e conhecemos a “Gangue dos Quatro” agora vamos ver seus padrões.


Saiba mais: Curso de Introdução a Design Patterns


Lista de padrões “Gof” organizados nas suas famílias:

Criacional

  • Singleton: assegura que somente um objeto de uma determinada classe seja criado em todo o projeto;
  • Abstract Factory: permite que um cliente crie famílias de objetos sem especificar suas classes concretas;
  • Builder: encapsular a construção de um produto e permitir que ele seja construído em etapas;
  • Prototype: permite você criar novas instancias simplesmente copiando instancias existentes;
  • Factory Mathod: as subclasses decidem quais classes concretas serão criadas.
  • text: text
  • text: text

Estruturais

  • Decorator: envelopa um objeto para fornecer novos comportamentos;
  • Proxy: envelopa um objeto para controlar o acesso a ele;
  • FlyWeigth: uma instancia de uma classe pode ser usada para fornecer muitas “instancias virtuais”;
  • Facade: simplifica a interface de um conjunto de classes;
  • Composite: Os clientes tratam as coleções de objetos e os objetos individuais de maneira uniforme;
  • Bridge: permite criar uma ponte para variar não apenas a sua implementação, como também as suas abstrações;
  • Adapter: envelopa um objeto e fornece a ele uma interface diferente;

Comportamental

  • Template Method: As subclasses decidem como implementar os passos de um algoritimo;
  • Visitor: permite acrescentar novos recursos a um composto de objetos e o encapsulamento não é importante;
  • Command: encapsula uma solicitação como um objeto;
  • Strategy: encapsula comportamentos intercambiáveis e usa a delegação para decidir qual deles será usado;
  • Chair of Responsability: permite dar a mais de um objeto a oportunidade de processar uma solicitação;
  • Iterator: fornece uma maneira de acessar seqüencialmente uma coleção de objetos sem expor a sua implementação;
  • Mediator: centraliza operações complexas de comunicação e controle entre objetos relacionados;
  • Memento: permite restaurar um objeto a um dos seus estados prévios, por exemplo, quando o usuário seleciona um “desfazer”;
  • Interpreter: permite construir um intérprete para uma linguagem;
  • State: encapsula comportamentos baseados em estados e usa a delegação para alternar comportamentos;
  • Observer: permite notificar outros objetos quando ocorre uma mudança de estado.

Os padrões freqüentemente são classificados com base num segundo atributo, se lidam ou não com classes ou objetos.

Padrões de classe

Descrevem como as relações entre classes são definidas através da hereditariedade. As relações, nos padrões de classe, são estabelecidas no momento da compilação.

  • Factory Method;
  • Adapter;
  • Template Method;
  • Interpreter.

Padrões de objetos

Descrevem os relacionamentos entre objetos e são definidos primariamente por composição. Os relacionamentos nos padrões de objetos normalmente são criados durante a execução e são muito mais dinâmicos e flexíveis.

  • Template Method;
  • Mediator;
  • Iterator;
  • Visitor;
  • Memento;
  • Interpreter;
  • Strategy;
  • Command;
  • Chair of Responsability;
  • Observer;
  • State

Bom, por hoje é só, e nos próximos artigos da série Design Patterns falaremos mais sobre alguns padrões “Gof” dando exemplos de aplicação e mais detalhes sobre os mesmos, até agora só falamos sobre a história e prevê conceitos, nos próximos artigos vamos falar de teoria e pratica dos padrões.

Fontes:
FREEMAN, ERIC & FREEMAN, ELISABETH – Use a Cabeça! Padrões de Projetos (Design Patterns), 2ª Edição


Saiu na DevMedia!

  • React Native: do Hello World ao CRUD:
    React é um framework JavaScript criado pelo Facebook para facilitar a construção de interfaces de usuário. React Native, da mesma empresa, nos permite criar aplicações mobile nativas utilizando JavaScript, na lógica, e React, para estruturar as views.

Saiba mais sobre Design Patterns ;)

  • Padrões Command e outros Patterns na prática:
    Os padrões de projetos são tão discutidos e exigidos por empresas e instituições de software, no seu dia a dia como programador . Por isso, nesse artigo veremos como aplicá-los em situações práticas que se aproximam da realidade de inúmeros softwares do mercado, bem como evoluir o sistema com base em qual padrão é melhor para cada cenário.
  • Introdução a Design Pattern:
    Com o Design Pattern você terá vários benefícios dentre eles são, código mais enxuto, limpo, organizado, aumentar a qualidade e diminuir a complexidade do seu código.
  • Design Patterns na teoria e na prática:
    Programadores mais novos atualmente se preocupam em tornarem-se especialistas em determinado framework, ignorando a complexidade envolvida por trás e consequentemente deixam de programar orientado a objetos em total plenitude, limitando-se apenas a criar trechos de código que se conectam e são executados por esses mesmos frameworks.