Apostila Padrões de Projeto
Um Padrão de Projeto de Software ou Padrão de Desenho de Software, também muito conhecido pelo termo original em inglês, Design Pattern, descreve uma solução geral reutilizável para um problema recorrente no desenvolvimento de sistemas de software orientados a objetos. Não é um código final, é uma descrição ou modelo de como resolver o problema do qual trata, que pode ser usada em muitas situações diferentes. Os Padrões de Projeto normalmente definem as relações e interações entre as classes ou objetos, sem especificar os detalhes das classes ou objetos envolvidos, ou seja, estão num nível de generalidade mais alto. Um padrão de projeto define :
seu nome;
o problema;
a solução;
quando aplicar esta solução; e
suas consequências.
Os padrões de projeto :
visam facilitar a reutilização de soluções de desenho - isto é, soluções na fase de
projeto do software; e
estabelecem um vocabulário comum de desenho, facilitando comunicação,
documentação e aprendizado dos sistemas de software.
Christopher Alexander em seus livros (1977/1979) Notes on the Synthesis of
Form, The Timeless Way of Building e A Pattern Language, estabelece que um padrão deve ter, idealmente, as seguintes características:
Encapsulamento: um padrão encapsula um problema ou solução bem definida.
Ele deve ser independente, específico e formulado de maneira a ficar claro onde ele se aplica.
Generalidade: todo padrão deve permitir a construção de outras realizações a
partir deste padrão.
Equilíbrio: quando um padrão é utilizado em uma aplicação, o equilíbrio dá a
razão, relacionada com cada uma das restrições envolvidas, para cada passo do projeto. Uma análise racional que envolva uma abstração de dados empíricos, uma observação da aplicação de padrões em artefatos tradicionais, uma série convincente de exemplos e uma análise de soluções ruins ou fracassadas pode ser a forma de encontrar este equilíbrio.