Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Padrões de DesignBibliografia
�Design Patterns: Elements of Reusable Object-Oriented Software. Gamma, Helm, Johnson eVlissides, a “Gang dos Quatro”. 1994.
�El Modo Intemporal de Construir. Christopher Alexander, 1977.
�A Pattern Language, Christopher Alexander, 1977.
�Lista de Livros�http://jerry.cs.uiuc.edu/~manolesc/SAG-
Seminar.html
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Padrões de DesignSites na Web
� Padrões de Design OO�http://hillside.net/patterns/patterns.html�http://gee.cs.oswego.edu/dl/cpj/ifc.html�http://st-www.cs.uiuc.edu/cgi-bin/wikic/wikic?JavaAWT�http://mordor.cs.hut.fi/tik-76.278/group6/awtpat.html
� Transactions and Accounts�http://c2.com/cgi/wiki?TransactionsAndAccounts�http://st-www.cs.uiuc.edu/users/johnson/Accounts.html
� Padrões para Processo de Desenvolvimento de Estrutura de Organizações�http://www.bell-labs.com/~cope/Patterns/Process/
� Padrões de Reengenharia�http://www.iam.unibe.ch/~famoos/patterns/
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Christopher Alexander(Arquiteto e Urbanista)
“Cada padrão descreve um problema que ocorre freqüentemente em seu ambiente, e então descreve o cerne da solução para aquele problema, de um modo tal que você pode usar esta solução milhões de vezes, sem nunca fazer a mesma coisa repetida”
O Origem dos Padrões
Padrões compondo uma linguagem capaz de suportar a construção coletiva, dinâmica, integral, etc, de artefatos humanos (casas, cidades, programas de computador, organizações, empresas, etc).
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Christopher Alexander, O ModoIntemporal de Construir, 1977.
� Edifícios ou cidades estão vivos à medida em que são governados pelo modo intemporal de construção.
� É um processo que extrai ordem de nós mesmos. Ocorrerá espontaneamente, somente se nos permitirmos.�Lugares adquirem suas características a partir dos padrões de
acontecimentos que lá ocorrem.�Acontecimentos estão sempre relacionados com padrões
geométricos (de construção)�Padrões de construção podem estar “vivos” ou “mortos”�Se “vivos” solucionam conflitos,e se auto-alimentam�Se “mortos” nos levam ao conflito interior.
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Padrões “Vivos” para Construçãode Casas, Bairros e Cidades
� Transição na Entrada �Problema, Soluções e
Conseqüências
� Gradiente de Intimidade�Problema, Soluções e
Conseqüências
� Lugar Janela�Problema, Soluções e
Conseqüências
� Bifurcações em T�Problema, Soluções e
Conseqüências
� Mosaico de Subculturas�Problema, Soluções e
Conseqüências
� Pousada Indiana�Problema, Soluções e
Conseqüências
� Banco de Jardim�Problema, Soluções e
Conseqüências
� etc...
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Uma Linguagem de Padrõespara um Jardim
Jardim Semi-Oculto
Jardim Espontâneo Pátios com Vida
Transição na Entrada
Terraço PrivadoOlhando para a Rua
Balcão de 1.80m
Conexão com a Terra
Banco de Jardim
Pomar
Lugar ÁrvoresLadeira em Terraços
Canto do Edifício
Local Público ExteriorEstufa
Lugar Ensolarado
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Complien’s Process and Organization Structure Patterns
� Size the Schedule � Organization Follows Market � Developer Controls Process � Architect Also Implements � Review the Architecture � Group Validation � Scenarios Define Problem � Named Stable Bases � De-Couple Stages� Hub-Spoke-and-Rim� Prototype � Take No Small Slips � Interrupts Unjam Blocking � Don't Interrupt an Interrupt
� Self-selecting team� Solo Virtuoso� Form follows Function � Domain Expertise in Roles� Phasing it In� Apprentice � Organization Follows Location � Organization Follows Market � Patron � Architect Controls Product � Planning and Architecture � Conway's Law � +23 ->
Uma Linguagem de Padrões para Programas OO
State
Memento Adapter Proxy
Bridge
Command
Chain of Responsibility
Singleton
Abstract Factory
Prototype
Template Method
Facade
Factory Method
Observer
MediatorStrategy
Decorator
Flyweight
Composite
Interpreter
Visitor
Iterator
Builder
AdicionandoOperações
AdicionandoOperações
EnumerandoFilhos
SalvandoEstado da Operação
CriandoComposições
AdicionandoResponsabilidades
a Objetos
Modificando Peleversus Entranhas
CompartilhandoComposições
DefinindoGramática
DefinindoTravessias
Definindoa Cadeia
CompostoUsando
EvitandoHisterese
CompartilhandoEstratégias
CompartilhandoEstados Compartilhando
Terminais
ConfigurarFábrica
Dinamicamente
ÚnicaInstância
ÚnicaInstância
ImplementadaUsando
GerenciamentoComplexo deDependências
Freqüentemente Usa
DefinindoPassos doAlgoritmo
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Padrões de Design
� Soluções Sucintas e de Fácil Aplicação�Capturam, de forma sucinta e facilmente aplicável, soluções de
projeto (de programas de computador, casas, cidades, bairros, etc) que foram desenvolvidas e evoluíram com o passar do tempo
� Soluções Exaustivamente Refinadas�Resultados de um longo processo de projeto, re-projeto, teste e
reflexão sobre o que torna um sistema mais flexível, reusável, modular e compreensível.
� Soluções Compartilhadas�Construídas em grupo�Através da construção e uso de um vocabulário comum
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Elementos Essenciais de um Padrão de Design
� Nome�Resume em uma ou duas palavras: o problema, as soluções e
conseqüências do uso do padrão.� O Problema
�Descreve quando aplicar o padrão. Explica o problema e seu contexto. Sintomas e condições.
� A Solução�Elementos que constituem o design, seus relacionamentos,
responsabilidades e colaboradores.� As Conseqüências
�Resultados e compromissos decorrentes da aplicação do padrão.
�Impactos sobre a flexibilidade, extensibilidade, portabilidade ou desempenho do sistema.
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Padrões de Design Orientado a Objetos - Livro da “Gang-dos-Quatro”
�Nome e Classificação�Intenção�Também Conhecido
Como�Motivação�Aplicabilidade
�Estrutura�Participantes�Colaboradores�Conseqüências�Implementação�Exemplo de Código�Usos Conhecidos�Padrões
Relacionados
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Classes de Padrões de Design OO
�Criacionais�Tornam um sistema independente de como seus
objetos são criados, compostos e representados�Estruturais
�Tratam de compor classes e objetos para formar estruturas grandes e complexas
�Comportamentais�Tratam de algoritmos e como atribuir
responsabilidades entre objetos
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Sistema
Objeto
SGBD
Padrões Criacionais
� Tornam um sistema independente de como seus objetos são criados, compostos e representados
create()
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Padrões Estruturais
� Tratam de compor classes e objetos para formar estruturas grandes e complexas
Adapter Composite
DecoratorFacade
FlyweightProxy
Bridge
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Padrões Comportamentais(1/2)
� Tratam de algoritmos e como atribuir responsabilidades entre objetos
ChainOfResponsibility exec
Command
new
exec()
Interpreter&
|
b c
a *
Iterator
Mediator Memento
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Observer(s)
30%, 20%, 50%
Padrões Comportamentais(2/2)
� Tratam de algoritmos e como atribuir responsabilidades entre objetos
Visitor
State Strategy
a() b()
a() b()
TemplateMethod()a(..);...b(..);
Visitor Visitor
30%, 10%, 60%
State
Memento Adapter Proxy
Bridge
Command
Chain of Responsibility
Singleton
Abstract Factory
Prototype
Template Method
Facade
Factory Method
Observer
MediatorStrategy
Decorator
Flyweight
Composite
Interpreter
Visitor
Iterator
Builder
Uma Linguagem de Padrões para Programas OO
AdicionandoOperações
AdicionandoOperações
EnumerandoFilhos
SalvandoEstado da Operação
CriandoComposições
AdicionandoResponsabilidades
a Objetos
Modificando Peleversus Entranhas
CompartilhandoComposições
DefinindoGramática
DefinindoTravessias
Definindoa Cadeia
CompostoUsando
EvitandoHisterese
CompartilhandoEstratégias
CompartilhandoEstados Compartilhando
Terminais
ConfigurarFábrica
Dinamicamente
ÚnicaInstância
ÚnicaInstância
ImplementadaUsando
GerenciamentoComplexo deDependências
Freqüentemente Usa
DefinindoPassos doAlgoritmo
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Formulário para Descrição de Padrões
�Nome e Classificação�Intenção�Também Conhecido
Como�Motivação�Aplicabilidade
�Estrutura�Participantes�Colaboradores�Conseqüências�Implementação�Exemplo de Código�Usos Conhecidos�Padrões
Relacionados
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Notação de Classes e Objetos
ClasseAbstrata
operaçãoAbstrata()
SubclasseConcreta1operação()
variávelDeInstância
referencia objetoagrega
cria
pseudo código
ClasseConcretaummuitos
umObjetoreferênciaAObjeto outroObjeto
variávelDeInstância
SubclasseConcreta2
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. [email protected]
Diagrama de Interação de Objetos
umObjetoop
eraç
ão a
tiva
sobr
eo
obje
to
TEM
PO
outroObjeto.método()this.método()
outroObjeto
outroObjeto = new Objeto()(instanciação)
Top Related