Você está na página 1de 5

Padro de projeto de software

Origem: Wikipdia, a enciclopdia livre.


Orientao a objetos
Objeto / Instncia
Classe
Abstrao
Atributo
Mtodos
Mensagem
Encapsulamento
Herana / Herana mltipla
Associao
Polimorfismo
Interface
Outras referncias
Paradigma de programao
Padres de projeto
UML / RUP
Engenharia OO
v e

Em engenharia de software, um padro de projeto ou padro de desenho (do ingls design


pattern) uma soluo geral reutilizvel para um problema que ocorre com frequncia dent
ro de um determinado contexto no projeto de software. Um padro de projeto no um pr
ojeto finalizado que pode ser diretamente transformado em cdigo fonte ou de mquina
, ele uma descrio ou modelo (template) de como resolver um problema que pode ser u
sado em muitas situaes diferentes. Padres so melhores prticas formalizadas que o prog
ramador pode usar para resolver problemas comuns quando projetar uma aplicao ou si
stema. Padres de projeto orientados a objeto normalmente mostram relacionamentos
e interaes entre classes ou objetos, sem especificar as classes ou objetos da apli
cao final que esto envolvidas. Padres que implicam orientao a objetos ou estado mutvel
mais geral, no so to aplicveis em linguagens de programao funcional.
Padres de projeto residem no domnio de mdulos e interconexes. Em um nvel mais alto h p
adres arquiteturais que so maiores em escopo, usualmente descrevendo um padro globa
l seguido por um sistema inteiro.[1]
Um padro de projeto define :
seu nome,
o problema,
quando aplicar esta soluo e
suas consequncias.
Os padres de projeto :

visam facilitar a reutilizao de solues de desenho - isto , solues na fase de proje


o do software - e
estabelecem um vocabulrio comum de desenho, facilitando comunicao, documentao e a
prendizado dos sistemas de software.
ndice
1 Histria
2 Padres GoF ('Gang of Four');
2.1 Padres de criao
2.2 Padres estruturais
2.3 Padres comportamentais
3 Padres GRASP
3.1 Padres

4
5
6
7

Crticas
Bibliografia
Referncias
Ligaes externas

Histria
Christopher Alexander[2] [3] [4] em seus livros (1977/1979) Notes on the Synthes
is of Form, The Timeless Way of Building e A Pattern Language, estabelece que um
padro deve ter, idealmente, as seguintes caractersticas:

Encapsulamento: um padro encapsula um problema ou soluo bem definida. Ele deve


ser independente, especfico e formulado de maneira a ficar claro onde ele se apli
ca.
Generalidade: todo padro deve permitir a construo de outras realizaes a partir de
ste padro.
Equilbrio: quando um padro utilizado em uma aplicao, o equilbrio d a razo, relac
ada com cada uma das restries envolvidas, para cada passo do projeto. Uma anlise ra
cional que envolva uma abstrao de dados empricos, uma observao da aplicao de padres e
rtefatos tradicionais, uma srie convincente de exemplos e uma anlise de solues ruins
ou fracassadas pode ser a forma de encontrar este equilbrio.
Abstrao: os padres representam abstraes da experincia emprica ou do conhecimento c
tidiano.
Abertura: um padro deve permitir a sua extenso para nveis mais baixos de detalh
e.
Combinatoriedade: os padres so relacionados hierarquicamente. Padres de alto nve
l podem ser compostos ou relacionados com padres que endeream problemas de nvel mai
s baixo.
Alm da definio das caractersticas de um padro, Alexander definiu o formato que a desc
rio de um padro deve ter. Ele estabeleceu que um padro deve ser descrito em cinco pa
rtes:
Nome: uma descrio da soluo, mais do que do problema ou do contexto.
Exemplo: uma ou mais figuras, diagramas ou descries que ilustrem um prottipo de
aplicao.
Contexto: a descrio das situaes sob as quais o padro se aplica.
Problema: uma descrio das foras e restries envolvidos e como elas interagem.
Soluo: relacionamentos estticos e regras dinmicas descrevendo como construir art
efatos de acordo com o padro, freqentemente citando variaes e formas de ajustar a so
luo segundo as circunstncias. Inclui referncias a outras solues e o relacionamento com
outros padres de nvel mais baixo ou mais alto.
Em 1987, a partir dos conceitos criados por Alexander, os programadores Kent Bec
k e Ward Cunningham propuseram os primeiros padres de projeto para a rea da cincia
da computao. Em um trabalho para a conferncia OOPSLA, eles apresentaram alguns padre
s para a construo de janelas na linguagem Smalltalk.[5] Nos anos seguintes Beck, C
unningham e outros seguiram com o desenvolvimento destas idias.
O movimento ao redor de padres de projeto ganhou popularidade com o livro Design
Patterns: Elements of Reusable Object-Oriented Software, publicado em 1995. Os a
utores desse livro, Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, so
conhecidos como a "Gangue dos Quatro" (Gang of Four) ou simplesmente "GoF".
Posteriormente, vrios outros livros do estilo foram publicados, merecendo destaqu
e Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Des
ign and Iterative Development, que introduziu um conjunto de padres conhecidos co
mo GRASP (General Responsibility Assignment Software Patterns).
Padres GoF ('Gang of Four');

Os padres "GoF" so organizados em 3 famlias :


Padres de criao : relacionados criao de objetos
Padres estruturais : tratam das associaes entre classes e objetos.
Padres comportamentais : tratam das interaes e divises de responsabilidades entr
e as classes ou objetos.
Padres "GoF" organizados nas suas 3 famlias:
Padres de criao
Abstract Factory
Builder
Factory Method
Prototype
Singleton
Padres estruturais
Adapter
Bridge
Composite
Decorator
Faade (ou Facade)
Flyweight
Proxy
Padres comportamentais
Chain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
Um padro "GoF" tambm classificado segundo o seu escopo em 2 outros grupos :
Padres com escopo de classe : definido por relacionamentos de herana e em temp
o de compilao.
Padres com escopo de objeto : encontrados no relacionamento entre os objetos
definidos em tempo de execuo.
Padres GRASP
Os padres GRASP, sigla para General Responsibility Assignment Software Patterns (
or Principles), consistem de um conjunto de prticas para atribuio de responsabilida
des a classes e objetos em projetos orientados a objeto.
Os padres utilizados pelo GRASP so: Controlador (Controller), Criador (Creator), I
ndireo (Indirection), Especialista na informao (Information expert), Alta coeso (High
Cohesion), Baixo acoplamento (Loose coupling), Polimorfismo (Polymorphism), Var
iaes protegidas (Protected variations), e Inveno pura (Pure fabrication).
Todos esses padres servem para a resoluo de problemas comuns e bastante tpicos de de
senvolvimento de software orientado a objeto. Portanto, tais tcnicas apenas docum

entam e normatizam as prticas j consolidadas, testadas e conhecidas no mercado.


Os padres GRASP esto mais como uma ferramenta mental ou uma filosofia de design, m
as que ainda assim so teis para o aprendizado e desenvolvimento de um bom design d
e software. Note que alguns padres GoF implementam solues correspondentes com padres
GRASP.
A principal obra sobre o assunto foi o livro "Utilizando UML e Padres" de autoria
de Craig Larman.[6]
Padres
Especialista na Informao
Criador (ver Factory Method)
Controlador (ver Model-view-controller)
Acoplamento fraco (ver Acoplamento))
Alta coeso (ver Coeso)
Polimorfismo
Indireo
Variaes Protegidas
Crticas
Segundo alguns usurios, alguns 'Padres de Projeto' so apenas evidncias de que alguns
recursos esto ausentes em uma determinada linguagem de programao (Java ou C++ por
exemplo). Nesta linha, Peter Norvig demonstra que 16 dos 23 padres do livro 'Desi
gn Patterns' so simplificados ou eliminados nas linguagens Lisp ou Dylan, usando
os recursos diretos destas linguagens.[7]
Segundo outros, excessos nas tentativas de fazer o cdigo se conformar aos 'Padres
de Projeto' aumentam desnecessariamente a sua complexidade.[8]
Bibliografia
Christopher Alexander. Notes on the Synthesis of Form. Estados Unidos: Harva
rd University Press, 1964. ISBN 0-674-62751-2
Christopher Alexander. The Timeless Way of Building. Estados Unidos: Oxford
University Press, 1979. ISBN 0-19-502402-8
Christopher Alexander. A Pattern Language. Estados Unidos: Oxford University
Press, 1977. ISBN 0-19-501919-9
Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented
Analysis and Design and Iterative Development. 1 ed. Estados Unidos: Prentice Ha
ll, 2004. 736 p. ISBN 0-13-148906-2
Gregor Hohpe, Bobby Woolf. Enterprise Integration Patterns: Designing, Build
ing, And Deploying Messaging Solutions. 1 ed. Estados Unidos: Addinson-Wesley, 2
004. 659 p. ISBN 0-321-20068-3
Pablo Dall'Oglio. PHP Programando com Orientao a Objetos: Inclui Design Patter
ns. 1 ed. So Paulo: Novatec, 2007. 576 p. ISBN 978-85-7522-137-2
Alexandre Altair de Melo e Mauricio G. F. Nascimento. PHP Profissional: Apre
nda a desenvolver sistemas profissionais orientados a objetos com padres de proje
to. 1 ed. So Paulo: Novatec, 2007. 464 p. ISBN 978-85-7522-141-9
Referncias
Martin, Robert C.. Princpios de Projeto e Padres de Projeto. Visitado em 2000.
OS CONCEITOS de padro de projeto foi criado na dcada de 70 pelo arquitecto Christo
pher Alexander.
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Eleme
nts of Reusable Object-Oriented Software. 1 ed. Estados Unidos: Addison-Wesley,
1995. ISBN 0-201-63361-2
Doug Lea. Christopher Alexander:An Introduction for Object-Oriented Designers (e
m Ingls). Visitado em 18 de abril de 2007.

Kent Beck, Ward Cunningham. Using Pattern Languages for Object-Oriented Programs
(em Ingls). Visitado em 18 de abril de 2007.
Utilizando UML e Padres 2 Edio - Craig Larman
Norvig, Peter (1998). "Design Patterns in Dynamic Languages". Ttulo do livro no fo
rnecido.
McConnell, Steve. Code Complete: A Practical Handbook of Software Constructi
on, 2nd Edition. [S.l.: s.n.], 2004. p. 105.
Ligaes externas
Commons
O Commons possui imagens e outras mdias sobre Padro de projeto de software
Lista de alguns padroes comuns (em ingls)
Pgina com descries e exemplos dos padres GoF (em ingls)
Jogo de Memorizao Padres de Projeto - GOF (em portugus)

Você também pode gostar