Tuesday, April 17, 2007

Ainda Design Patterns...

Ainda no seguimento do tópico Patterns, resolvi abordar um pouco mais os Design Patterns. Estou a ler algumas passagens do livro do GoF e aqui estão algumas impressões gerais, que podem ser interessantes.

O que é um Design Pattern?

Cristopher Alexander, um arquitecto que trouxe à tona este topico na decada de 70, no contexto da construção, dá uma definição de Patterns: "Each pattern describes a problem which occurs over and over in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it in the same way twice."

Os Patterns recorrentes pretendem resolver problemas de desenho e construir desenhos orientados a objectos mais flexiveis, elegantes, e reutilizaveis. Ajudam a construir novos desenhos baseados em experiencias anteriores de desenho e arquitecturas de sistemas.

Em geral, um pattern tem quatro elementos essenciais:
- Nome: descreve o problema de desenho, as suas soluções e consequencias, numa palavra ou duas. Dar nome a um pattern aumenta o nosso vocabulario de desenho!
- Problema: descreve quando aplicar o Pattern. Explica o problema e o seu contexto.
- Solução: descreve os elementos que constituem o desenho, as suas relações, responsabilidades e colaborações. Não descreve um desenho ou uma implementação em concreto, porque um Pattern é uma especie de template que pode ser aplicado em diferentes situações. O Pattern fornece uma descrição abstracta de um problema de desenho e como uma organização genérica dos elementos o resolve.
- Consequências: são o resultado e as vantagens de aplicar o Pattern. Dado que a reutilização é importante no desenho orientado a objectos, as consequências de aplicar um Pattern devem incluir o impacto que tem a solução.

Esta abordagem a Design Patterns (a feita no livro do GoF) descreve-os como "descrições de objectos e classes que comunicam entre si, customizados para resolver problemas de desenho genéricos num contexto especifico". No entanto, num tema tão aberto como este, as abordagens acabam por também variar. Há que escolher a mais adequada ao nosso contexto em cada momento.

Assim.....

Como escolher um Design Pattern

Há MUITOS Design Patterns catalogados, uns mais divulgados que outros. Por isso, como escolher dentre uma miriade de Patterns, a maioria deles provavelmente sendo novidade para nós? (Ok, são só umas dezenas valentes... mas pronto... :))

O GoF dá uma ajudinha, fornecendo diferentes abordagens para encontrar o Design Pattern mais adequado.

- Analiza como os Design Patterns resolvem problemas de desenho
- Percebe o objectivo do Pattern
- Estuda como os Patterns se relacionam entre si
- Estuda Patterns de objectivos similares
- Examina a causa que levou à necessidade de redesenhar
- Considera o que deve ser variável no desenho sem ter de redesenhar

Esta abordagem aos Design Patterns é naturalmente muito vocacionada ao contexto apresentado pelo GoF. Mas mesmo generalizando, há pontos em comum com as nossas realidades que podem até ser um pouco diferentes, mas às quais podemos adaptar alguns destes principios.


Espero que pelo menos sirvam como bom ponto de partida para passarmos a utilizar Patterns em geral!

Divirtam-se! :)

No comments: