Padrões de GoF
Em engenharia de software, um padrão de projeto ou padrão de desenho (do inglês design pattern) é uma solução geral reutilizável para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software. Um padrão de projeto não é um projeto finalizado que pode ser diretamente transformado em código fonte ou de máquina, ele é uma descrição ou modelo (template) de como resolver um problema que pode ser usado em muitas situações diferentes. Padrões são melhores práticas formalizadas que o programador pode usar para resolver problemas comuns quando projetar uma aplicação ou sistema. Padrões de projeto orientados a objeto normalmente mostram relacionamentos e interações entre classes ou objetos, sem especificar as classes ou objetos da aplicação final que estão envolvidas. Padrões que implicam orientação a objetos ou estado mutável mais geral, não são tão aplicáveis em linguagens de programação funcional.
Padrões de projeto residem no domínio de módulos e interconexões. Em um nível mais alto há padrões arquiteturais que são maiores em escopo, usualmente descrevendo um padrão global seguido por um sistema inteiro.1
Um padrão de projeto define : seu nome, o problema, 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.
Lista de padrões “Gof” organizados nas suas famílias:
· Criacional: o Singleton: assegura que somente um objeto de uma determinada classe seja criado em todo o projeto; o Abstract Factory: permite que um cliente crie famílias de objetos sem especificar suas classes concretas; o Builder: encapsular a construção de um produto e permitir que ele seja construído em etapas; o Prototype: permite você criar novas instancias simplesmente copiando