Classificação dos Padrões de Projeto GoF

Quem acompanha o blog viu que já falamos (e codificamos) todos os Padrões de Projeto catalogados no livro Padrões de Projeto do GoF. Apesar de parecer estranho falar de uma visão geral dos padrões depois dos padrões, fica mais fácil discutir sobre as relações entre padrões quando eles já são conhecidos.

Então vamos falar um pouco sobre as categorias dos padrões de projeto GoF. Segundo o livro, os padrões são divididos em três categorias: de Criação, Estrutural e Comportamental. Todos os padrões destas categorias tem um conjunto de características específicas, que motivam a categorização deles.

Antes de falar das categorias, é importante comentar que os padrões de objeto, além das categorias, podem ser classificados também em relação ao seu escopo: de Classe ou de Objetos. Padrões com escopo de Classe vão utilizar a herança para compor ou variar os objetos, mantendo a flexibilidade do sistema. Já os padrões de Objeto irão delegar as suas responsabilidades para um objeto.

A figura a seguir permite visualizar a classificação dos padrões de projeto, de acordo com os critérios falados:

Padrões de Criação

Os padrões de criação tem como intenção principal abstrair o processo de criação de objetos, ou seja, a sua instanciação. Desta maneira o sistema não precisa se preocupar com questões sobre, como o objeto é criado, como é composto, qual a sua representação real. Quando se diz que o sistema não precisa se preocupar com a instanciação do objeto quer dizer que, se ocorrer alguma mudança neste ponto, o sistema em geral não será afetado. Isso é a famosa flexibilidade que os padrões de projeto buscam.

Padrões de criação com escopo de classe vão utilizar herança para garantir que a flexibilidade. Por exemplo, o padrão Factory Method pode criar várias subclasses para criar o produto. Já os padrões com escopo de Objeto, como o Prototype, delegam para um objeto (no caso o protótipo) a responsabilidade de instanciar novos objetos.

Padrões Estruturais

Os padrões estruturais vão se preocupar em como as classes e objetos são compostos, ou seja, como é a sua estrutura. O objetivo destes padrões e facilitar o design do sistema identificando maneiras de realizar o relacionamento entre as entidades, deixando o desenvolvedor livre desta preocupação.

Os padrões com escopo de classe utilizam a herança para compor implementações ou interfaces. O padrão Adapter, por exemplo, pode definir uma nova interface para adaptar duas outras já existentes, assim uma nova classe é criada para adaptar uma interface a outra. Os padrões com escopo de objeto utilizam a composição de objetos para definir uma estrutura. Por exemplo, o padrão Composite define (explicitamente) uma estrutura de hierárquica para classes primitivas e compostas em um objeto.

Padrões Comportamentais

Os padrões comportamentais atuam sobre como responsabilidades são atribuídas as entidades, ou seja, qual o comportamento das entidades. Estes padrões facilitam a comunicação entre os objetos, distribuindo as responsabilidades e definindo a comunicação interna.

Padrões com escopo de classe utilizam herança para realizar a distribuição do comportamento. Um bom exemplo é o padrão Template Method, que fornece um algoritmo (comportamento) padrão e deixa as subclasses definirem alguns pontos da execução do algoritmo. Já os padrões de objetos vão compor os objetos para definir a comunicação, como o padrão Mediator, que define um objeto que realiza a comunicação muitos-para-muitos.

Para saber mais sobre os padrões, acesse a página Padrões de Projeto, lá estão listado todos os padrões comentados aqui, com exemplos de utilização e código em Java. Além disso, outro site que detalha mais os padrões e traz exemplos em diversas linguagens é o SourceMaking. Como livros, o principal é o livro de referência, Padrões de Projeto, e o livro da séria Use a Cabeça!: Padrões de Projeto.

Anúncios

3 comentários sobre “Classificação dos Padrões de Projeto GoF

  1. Acabo de blogar sobre aplicações de padrões de projeto em frameworks de mercado e indiquei esse resumo como referência. Parabéns!

  2. Excelente artigo, parabéns!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s