Curso de Design Patterns

Padrão de projeto de software – Design Patterns

Em Engenharia de Software, um padrão de desenho (pt) ou padrão de projeto (pt-BR) (do inglês design pattern) é uma solução geral 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]

As características obrigatórias que devem ser atendidas por um padrão de projeto é composto basicamente por 4 (quatro) elementos que são:

Nome do padrão;
Problema a ser resolvido;
Solução dada pelo padrão; e
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.

Vamos ver no curso de padrão de projetos de software os principais padrões GoF e GRASP.

Padrões de criação
Abstract Factory
Object pool
Builder
Factory Method
Prototype
Singleton
Padrões estruturais
Private class data
Adapter
Bridge
Composite
Decorator
Façade (ou Facade)
Business Delegate
Flyweight
Proxy
Padrões comportamentais[3]
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor