Padrões de Design
Orientado a Objetos
Design Patterns
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br
Padrões de Design
Bibliografia
Design Patterns: Elements of Reusable
Object-Oriented Software. Gamma, Helm, Johnson e
Vlissides, a “Gang dos Quatro”. 1994.
El Modo Intemporal de Construir. Christopher
Alexander, 1977.
A Pattern Language, Christopher Alexander,
1977.
Lista de Livros
Padrões de Design
Sites 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.htmlTransactions 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
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br
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
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
Christopher Alexander, O Modo
Intemporal 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
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br
Padrões “Vivos” para Construção
de Casas, Bairros e Cidades
Uma Linguagem de Padrões
para um Jardim
Jardim Semi-Oculto
Jardim Espontâneo Pátios com Vida
Transição na Entrada
Terraço Privado
Olhando para a Rua
Balcão de 1.80m
Conexão com a Terra Banco de Jardim
Pomar
Lugar Árvores
Ladeira em Terraços
Canto do Edifício
Local Público Exterior Estufa
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
Uma Linguagem de Padrões para Programas OO
State
Memento Adapter Proxy
Bridge Command Chain of Responsibility Abstract Factory Prototype Template Method Factory Method Observer Mediator Strategy Decorator Flyweight Composite Interpreter Visitor Iterator Builder Adicionando Operações Adicionando Operações Enumerando Filhos Salvando Estado da Operação Criando Composições Adicionando Responsabilidades a Objetos Modificando Pele versus Entranhas Compartilhando Composições Definindo Gramática Definindo Travessias Definindo a Cadeia Composto Usando Evitando Histerese Compartilhando Estratégias Compartilhando Estados Compartilhando Terminais Configurar Fábrica Dinamicamente Única
Instância ImplementadaUsando
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br
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
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.
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br
Padrões de Design Orientado a
Objetos - Livro da “Gang-dos-Quatro”
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
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br
Sistema
Objeto
SGBD
Padrões Criacionais
Tornam um sistema independente de como seus objetos são criados, compostos e representados
Padrões Estruturais
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br
Padrões Comportamentais(1/2)
Observer(s)
30%, 20%, 50%
Padrões Comportamentais(2/2)
State
Memento Adapter Proxy
Bridge Command Chain of Responsibility Singleton Abstract Factory Prototype Template Method Facade Factory Method Observer Mediator Strategy Decorator Flyweight Composite Interpreter Visitor Iterator Builder
Uma Linguagem de Padrões para Programas OO
Padrões de Design. Java Deployment Couser. Recife, DI-UFPE, Maio de 1999. Jorge H. C. Fernandes. jhcf@di.ufpe.br