Escolar Documentos
Profissional Documentos
Cultura Documentos
Use a Cabea! Padres de Projetos consegue misturar diverso, grandes risadas, profundidade tcnica e timos con-
selhos prticos em uma leitura divertida e inspiradora. Independentemente de ser um novato nos padres de projetos,
ou os ter usado por anos, voc certamente sair ganhando ao visitar a Objetolndia
- Richard Helm, co-autor de Padres de Projetos com o resto da Gang of Four
Erich Gamma, Ralph Johnson e John Vlissides
Me sinto como se uma pilha de mil livros tivesse acabado de ser tirada de cima da minha cabea
- Ward Cunningham, inventor do Wiki e fundador do Hillside Group
Este livro chega quase perfeio, por causa da maneira como ele combina o conhecimento e a facilidade de leitura. Ele
fala com autoridade e timo de ler. um dos muito poucos livros sobre software que j li e considero indispensveis.
(Eu colocaria talvez 10 livros nessa categoria, no mximo.)
- David Gelerneter, Professor de Cincia da Computao, Universidade de Yale e autor de
Mirror Worlds e Machine Beauty.
Um mergulho de cabea no reino dos padres, um lugar onde coisas complexas se tornam simples, mas onde coisas
simples podem tambm se tornar complexas. No consigo pensar em guias melhores do que os Freemans.
- Miko Matsummura, Analista da Indstria, The Middleware Company; Ex-Pregador Chefe do Java,
Sun Microsystems
Minha primeira reao foi rolar de rir. Depois de me recompor, percebi que o livro no somente tecnicamente preciso,
como tambm a introduo aos padres de projetos mais fcil de entender que eu j vi.
-Dr. Timothy A. Budd, Professor Associado de Cincia da Computao na Universidade Estadual de Oregon
e autor de mais de uma dzia de livro, incluindo C++ para Programadores Java
Jerry Rice executa padres melhor do que qualquer jogador da NFL, mas os Freemans acabaram de super-lo. Mas
falando srio... este um dos livros mais engraados e inteligentes sobre projetos de software que eu j li.
- Aaron LaBerge , VP Technology, ESPN.com
H um velho ditado na indstria de computadores e videogames bem, no pode ser to velho porque a prpria
indstria no velha assim que diz mais ou menos o seguinte: O Projeto Vida. O mais curioso sobre essa frase que
mesmo hoje em dia quase ningum que trabalha com a arte de criar jogos eletrnicos consegue chegar a um acordo
sobre o que signica projetar um jogo. O projetista um engenheiro de software? Um diretor de arte? Um contador
de histrias? Um arquiteto ou um pedreiro? Uma pessoa com os ps no cho ou um visionrio? possvel um mesmo
indivduo ter algo de todos esses papis? E, mais importante, quem liga para essa %$#&*?
J foi dito que o crdito projetado por em entretenimento interativo similar ao dirigido por na indstria dos lmes, o
que de fato permite ao nosso crdito compartilhar DNA com aquele que talvez o crdito mais controverso, exagerado, e
freqentemente sem nenhuma humildade j propagado na arte comercial. Boa companhia, hein? E mesmo assim, o Projeto
Vida, ento talvez seja hora de despendermos algum tempo pensando sobre o que ele . Eric e Elisabeth Freeman intre-
pidamente se ofereceram para explorar os mistrios do cdigo para ns em Use a Cabea! Padres de Projetos. No estou certo
de que qualquer um deles se importe tanto assim com o PlayStation ou o X-Box, e nem eles deveriam. Mesmo assim, eles
abordam a noo de projeto em um nvel signicativamente honesto, de forma tal que qualquer um procurando por elogios
aos seus prprios talentos como escritor deve car avisado de que ter uma boa lio de humildade ao ler este livro.
- Ken Goldstein, Vice-Presidente Executivo & Diretor Gerente, Disney Online
O livro tem o tom exato para o guru nerd e casualmente legal em todos ns. A referncia correta para estratgias prticas de
desenvolvimento faz o meu crebro funcionar sem ter de empurrar um monte de conversa velha e mofada de professor.
- Travis Kalanick, Fundador do Scour and Red Swoosh, membro do MIT TR100
Este livro combina bom humor, timos exemplos e conhecimento aprofundado dos Padres de Projetos de forma tal que
torna o aprendizado divertido. Trabalhando na indstria de tecnologia de entretenimento, eu tenho dvidas sobre o Princ-
pio Hollywood e o Padro Facade dos home theaters, entre outros. O entendimento dos Padres de Projetos no apenas nos
ajudam a criar bom software reutilizvel e fcil de manter, mas tambm ajuda a melhorar as nossas habilidades de resoluo
de problemas em vrias reas. Este livro indispensvel para todos os prossionais e estudantes de computao.
- Newton Lee, Fundador e Editor-Chefe, Association for Computing Machinerys (ACM)
Computers int Entertainment (acmcie.org.)
rpido, irreverente, divertido e envolvente. Cuidado voc pode acabar realmente aprendendo algo!
Ken Arnold, ex-Engenheiro Snior da Sun Microsystems Co-autor (com James Gosling, criador do Java)
de The Java Programming Language
Use A Cabea! Java mais ou menos o que acontece quando o Monty Python encontra a gang of four... o texto to
bem dividido entre quebra-cabeas e estrias, testes e exemplos, que voc aprende com uma profundidade que nenhum
outro livro sobre computao oferece.
Douglas Rowe, Grupo de Usurios Java de Columbia
Use A Cabea! Java... d um novo signicado frase de marketing deles H um OReilly para isso. Eu escolhi este
aqui porque vrias pessoas que respeito o tinham descrito em termos como revolucionrio e ressaltando a abordagem
radicalmente diferente do livro-texto. Elas estavam (esto) certas... De modo tipicamente OReilly, eles usaram uma
abordagem cientca e bem pensada. O resultado engraado, irreverente, dividido em tpicos, interativo e brilhante...
Ler este livro como estar no saguo de uma conferncia tcnica, aprendendo e rindo com os seus pares... Se voc
quiser ENTENDER Java, v comprar este livro.
Andrew Pollack, www.thenorth.corn
Se voc quer aprender Java, achou o que procurava: bem-vindo ao primeiro livro tcnico com uma GUI! Este formato
perfeitamente executado e inovador oferece benefcios que outros textos sobre Java simplesmente no conseguem...
Prepare-se para uma viagem realmente notvel pela Javalndia.
Neil R. Bauman, Capito e CEO, Geek Cruises (www.GeekCruises.corn)
Que fantstica maneira de aprender!!! NO CONSIGO FECHAR ESTE LIVRO!!! Meu lho de 3 anos acordou
1h40 da madrugada e eu o coloquei de volta na cama com o livro e uma lanterna na mo, para poder continuar lendo
por cerca de mais uma hora.
Ross Goldberg
Use a Cabea
Padres e Projetos
2a Edio Revisada
No seria maravilhoso se
houvesse um livro sobre Padres
de Projetos que fosse mais
divertido que ir ao dentista
e mais revelador do que um
formulrio do Imposto de
Renda? Mas provavelmente isso
s uma fantasia...
Eric Freeman
Elisabeth Freeman
com
Kathy Sierra
Bert Bates
Introduo
Sua mente concentrada nos Padres de Projetos. Aqui voc est tentando aprender algo, enquanto o seu crebro est lhe
fazendo um favor certicando-se de que o aprendizado no se manter. Seu crebro est pensando: melhor deixar espao
para coisas mais importantes, como quais animais selvagens evitar e fazer esqui na neve pelado uma m idia. Ento,
como voc engana o seu crebro para faz-lo pensar que a sua vida depende de aprender os Padres de Projetos?
A quem se destina este livro? XVI
Sabemos o que voc est pensando XVI
E sabemos o que o seu crebro est pensando XVI
Metacognio: pensando sobre o pensamento XVIII
Eis o que VOC pode fazer para obrigar seu crebro a obedec-lo XIX
Revisores Tcnicos XXII
Agradecimentos XXII
Lembre-se: conhecer conceitos como abstrao, herana e polimorsmo no o torna um bom projetista orientado a
objetos. Um guru dos projetos pensa sobre como criar projetos exveis que sejam fceis de manter e modicar.
Comeou com um simples aplicativo SimUDuck 2
Joe pensa sobre herana... 4
Que tal uma interface? 4
A constante no desenvolvimento de software 6
Separando o que muda do que ca igual 7
Desenvolvendo os comportamentos de Duck 8
Testando o cdigo Duck 13
Congurando o comportamento de forma dinmica 14
Uma viso geral dos comportamentos encapsulados 16
TEM-UM pode ser melhor do que -UM 17
E por falar em Padres de Projetos... 18
O poder de um vocabulrio de padro compartilhado 21
Como usar os Padres de Projetos? 21
Ferramentas para sua caixa de ferramentas de projeto 23
Soluo dos exerccios 26
VII
O Padro Observer
No durma no ponto quando algo interessante acontecer! Temos um padro que mantm os seus objetos informados
quando algo que possa lhes interessar acontece. Os objetos podem at mesmo decidir, no momento da execuo, se
querem ser mantidos informados ou no. O Padro Observer um dos mais usados do JDK e incrivelmente til. Antes
de terminarmos, veremos tambm as relaes de um para muitos e o acoplamento solto (sim, isso mesmo, ns dissemos
acoplamento). Com o Observer, voc ser a alma da Festa dos Padres.
Viso geral do aplicativo Weather Monitoring 28
Conhea o Padro Observer 32
Editora + Assinantes = Padro Observer 32
Cinco minutos de teatro: um assunto para observao 35
O Padro Observer denido 36
O poder da Ligao Leve 38
Desenvolvendo a Estao Meteorolgica 40
Implementando a Estao Meteorolgica 40
Usando o Padro Observer interno de Java 45
Retrabalhando a Estao Meteorolgica no suporte interno 48
Ferramentas para sua caixa de ferramentas de projeto 52
Solues dos exerccios 55
O Padro Decorator
3 Decorando Objetos
Chame este captulo de Olho de design para o garoto da herana. Examinaremos novamente o tpico uso excessivo
da herana e voc aprender a decorar suas classes no tempo de execuo usando uma forma de composio de objeto.
Por qu? Depois que voc descobrir as tcnicas de decorao, poder dar novas responsabilidades a seus objetos (ou de
outra pessoa) sem fazer nenhuma mudana de cdigo nas classes bsicas.
Eu achava que homens de verdade subclassicavam tudo. Isso at eu aprender o poder da extenso no tempo de exe-
cuo, em vez de no tempo de compilao. Olhe s para mim agora!
Fundamentos OO
Bem-vindo ao Starbuzz Coffee 58 Abstrao
O Princpio Aberto-Fechado 63 Encapsulamento
Siga o Padro Decorator 64 Polimorsmo
ios OO Herana varia.
Construindo um pedido de bebida com Decoradores 64 Princp qu e
p s u le o posi-
O Padro Decorator denido 65 En c a
r id a d e com na.
a
Decorando nossas bebidas 66 D prio elao her e,
o e m r ter ac
f
Escrevendo o cdigo do Starbuzz 69
r a m e para in aes.
Decoradores do mundo real: Java I/O 73 Prog ent
p a r a implem vemente
Escrevendo seu prprio Decorador Java I/O 74 no s le
design que
Ferramentas para sua caixa de ferramentas de projeto 76 Busque ntre objetos
s e
Solues dos exerccios 77 ligado m.
e
interag
O Padro Factory
O Padro Singleton
5 Objetos nicos
O Padro Singleton: o seu ingresso para criar objetos nicos, para os quais h apenas uma instncia. Talvez voc que
contente de saber que, de todos os padres, o Singleton o mais simples em termos do diagrama das suas classes; na
verdade, o diagrama possui apenas uma classe! Mas no se sinta vontade demais; apesar da sua simplicidade de um
ponto de vista do design das classes, encontraremos algumas ondulaes e alguns buracos na pista da sua implementa-
o. Ento aperte o cinto este aqui no to simples quanto parece...
O Pequeno Singleton 127
Dissecando a implementao clssica do Padro Singleton 128
Entrvista desta semana: Consses de um Singleton 129
A Fbrica Chocolate 130
Padro Singleton denido 132
Hershey, PA
Huston temos um problema... 132
Seja o JVM 133
Lidando com vrios segmentos 134
Podemos melhorar os vrios segmentos? 134
Ferramentas para sua caixa de ferramentas de projeto 138
Solues dos Exerccios 141
O Padro Command
Neste captulo, iremos tentar feitos to impossveis quanto colocar um objeto quadrado em um buraco redondo.
Parece impossvel? No quando temos os Padres de Projetos. Lembra-se do Padro Decorator? Ns embrulhamos os
objetos para dar a eles novas responsabilidades. Agora iremos embrulhar alguns objetos com um propsito diferente:
fazer com que as suas interfaces aparentem ser algo que no so. Por que faramos algo assim? Para podermos adaptar
um projeto que espera uma determinada interface a uma classe que implementa uma interface diferente. E no s
isso: enquanto estamos com a mo na massa, veremos tambm um outro padro que embrulha objetos para simplicar
as suas interfaces.
Estamos cercados de adaptadores 178
Adaptadores orientados a objetos 178
Explicando o Padro Adapter 182
Denindo o Padro Adapter 183
Adaptadores de objetos e de classes 184
Adaptadores no mundo real 187
Adaptando uma Enumerao a um Iterator 187
E agora algo diferente... 190
Todo Mundo Quer um Home Theater 191
Tomada de
Luzes, Cmera e Fachada! 193 Parede Europia
Construindo a fachada do seu home theater 194 Adaptador
Pino
Denio do Padro Facade 196 Americano
para CA para CA
O Princpio do Conhecimento Mnimo 197
Ferramentas para sua caixa de ferramentas de projeto 201
Solues dos Exerccios 203
O Padro Template
8 Encapsulando Algoritmos
J encapsulamos a criao de objetos, mtodos, interfaces complexas, patos, pizzas... o que vir depois? Vamos en-
capsular algoritmos para que as subclasses possam se conectar diretamente a uma computao a qualquer momento que
quiserem. Iremos aprender at mesmo um princpio de projetos inspirado em Hollywood.
O Padro State
O Padro Proxy
Padres Compostos
12 Padres de Padres
Quem poderia adivinhar que os Padres conseguem trabalhar juntos? Tendo presenciado as exaltadas Conversas ao
P do Fogo (e voc ainda nem viu as pginas do Combate Mortal entre Padres, que o editor nos forou a remover do
livro), voc certamente no imaginaria que ocasionalmente os padres podem at conviver em paz. Bem, acredite ou
no, alguns dos esquemas mais poderosos da programao orientada a objetos baseiam-se na utilizao simultnea de
vrios padres. Portanto, prepare-se para subir mais um degrau no seu domnio dos padres: chegou a hora dos padres
compostos. Mas cuidado os seus colegas podem ter que sacric-lo se voc pegar a Febre dos Padres
Trabalhando juntos 374
Reunio de patos 374
O que ns zemos? 393
Viso panormica: o diagrama de classes 394
O Rei dos Padres Compostos 396
Conhecendo o Modelo-Visualizao-Controlador 397
Examinando o MVC atravs de lentes coloridas por padres 400 Frio
Usando o MVC para controlar a batida 402 Quente
Conhea a Visualizao do Java DJ 402
A Visualizao 405
XII
E agora o Controlador 408
Explorando Strategy 411
Adaptando o Modelo 411
Agora estamos prontos para o HeartController 412
Coisas para fazer 413
MVC e a Internet 414
Padres de Projetos e Modelo 2 419
Ferramentas para sua caixa de ferramentas de projeto 422
Solues dos Exerccios 423
Padres de Projetos e o Modelo 2 443
Ferramentas para a sua Caixa de Ferramentas de Projetos 446
Solues dos Exerccios 447
Nem todos podem ser os mais populares. Muitas coisas mudaram nos ltimos dez anos. Desde que saiu a primeira edio
de Padres de Projetos: Elementos de Software Reutilizado Orientado a Objetos, os desenvolvedores vm aplicando esses padres
milhares de vezes. Os padres que resumimos neste apndice so padres GoF (padres fundamentais originais) ociais
completos e de carteirinha, mas no so sempre usados com a mesma freqncia que os padres que exploramos at
aqui. Mas os padres deste apndice so eles mesmos excelentes e, se a situao exigir, voc deve ser capaz de aplic-los
com orgulho. O nosso objetivo neste apndice lhe dar uma idia geral do que so estes padres.
XIII
Outros ttulos da Srie Use a Cabea!
Use a Cabea Java
Use a Cabea Anlise & Projeto Orientado a Objetos (A&POO)
Use a Cabea Ajax Iniciao Rpida
Use a Cabea HTML com CSS e XHTML
Use a Cabea Servlets e JSP
Use a Cabea PMP
Use a Cabea SQL
Use a Cabea Desenvolvimento de Software
Use a Cabea JavaScript
Use a Cabea C#
Use a Cabea PHP & MySQL (2009)
Use a Cabea Fsica (2009)
Use a Cabea Algebra (2009)
Use a Cabea Ajax Profissional (2009)
Use a Cabea Estatstica
Use a Cabea Ruby on Rails
XIV
Como usar este livro
Introduo
No acredito que
colocaram isso em um
livro sobre padres de
projetos.
t a s eo , r es po n d em os perguEneltaes
N es o, P OR QU
que no querisscao laemr:uEmntlivro sobre padres
colocaram os?.
de projet
XV
Use a Cabea Padres de Projetos
XVI
Como usar este livro
o um aprendiz.
de Use a Cabea! com
Ns pensamos no leitor
ender, depois certicar-
para se apr end er algo? Primeiro voc tem que ent e as
Ento, o que necess rio tro da sua cabea. Conform
vai esquec er. N o se trata de empurrar fatos para den edu cao, apr end er
se de que no e psicologia da
mais recentes sobre cin cia cognitiva, neurobiologia a ao seu cr ebro.
pesqui sas emos o que inte ress
to em uma pgina. Ns sab
exige muito mais do que tex
a!:
aprendizado Use a Cabe
Alguns dos princpios do eis do que apenas
muito mais memorv
Use o visual. As imagens so 89% de precisa chamar servio remoto
end izado muito mais efetivo (at
as palavras e tornam o apr nc ia). Tam bm torna um m to do no RMI
brana e transfer servidor
melhoria em estudos de lem ue as palavras dentro per ou to
fce is de ent end er. Co loq
as coisas mais l ou em outra doCalc()
referem, em vez de no na
dos grcos a que elas se con seg uir em res olv er
de os aprendizes
pgina, e a probabilidade valor de
ado s ao con tedo poder dobrar. retorno
problemas relacion
dos recentes, os estu-
al e personalizado. Em estu
Use um estilo conversacion ra de at 40% no desempenho
dantes tiveram uma melho va
quando o contedo fala
em testes ps-aprendizado con ver sacion al, em
um estilo
realmente uma droga ser diretamente ao leitor, usando
di
um mtodo abstrato. No pes soa , em vez de se usar um tom formal. Conte
primeira
pr
se tem um corpo. as. Use Faz sentido dizer que a
histrias em vez de dar aul
hi
. N o se lev ea Banheira -UM Banheiro?
linguagem casual
li Ou o Banheiro -UMA
voc pre star ia ma is
srio demais. Em que
Banheira? Ou uma
Ento COMO voc faz o seu crebro pensar que os Padres de Projetos so to
importantes quanto um tigre?
Existe a maneira lenta e tediosa e a maneira mais rpida e mais efetiva. A maneira lenta refere-se repetio exausti-
va. Voc obviamente sabe que capaz de aprender e memorizar at mesmo o assunto mais enfadonho, se se mantiver
batendo na mesma tecla. Repetindo o suciente, o seu crebro diz: Isto no parece importante, mas ele ca olhando
a mesma coisa repetidas e repetidas vezes, ento eu suponho que deve ser.
A maneira mais rpida fazer qualquer coisa que aumente a atividade cerebral, especialmente aumentando diferentes
tipos de atividades cerebrais. As coisas que voc viu na pgina anterior so uma grande parte da soluo, e elas so
todas coisas que comprovadamente ajudam o seu crebro a trabalhar em seu favor. Por exemplo, estudos mostram que
colocar palavras dentro das guras que elas descrevem (em vez de em algum outro lugar da pgina, como em uma
legenda ou no corpo do texto) faz o seu crebro tentar perceber em que sentido as palavras e a gura se relacionam,
e isso faz disparar mais neurnios. Mais neurnios disparados = maior a chance de o seu crebro perceber que isto
algo que vale a pena prestar ateno e possivelmente armazenar.
Um estilo conversacional ajuda porque as pessoas tendem a prestar mais ateno quando percebem que esto em uma
conversa, porque nessa situao espera-se que elas sigam o que est sendo dito e mantenham o seu lado da conexo
ativo. O incrvel que o seu crebro no necessariamente se importa se a conversa entre voc e um livro! Por outro
lado, se o estilo de escrita for formal e seco, o seu crebro o percebe da mesma forma como percebe quando voc est
ouvindo uma aula, sentado em uma sala cheia de alunos passivos. No preciso car acordado.
Mas guras e estilo conversacional so apenas o incio.
Objeto Gato
seu crebro est ajustado para prestar ateno na bioqumica das
emoes. Aquilo que o faz sentir algo tem maior probabilidade de Atualizao/Noticao automtica
XVIII
Como usar este livro
Usamos um estilo personalizado, conversacional, porque o seu crebro est ajustado para prestar
mais ateno quando acredita que voc est em uma conversao do que quando pensa que voc est
ouvindo passivamente uma apresentao. Seu crebro faz isso mesmo quando voc est lendo.
Inclumos mais de 40 atividades, porque o seu crebro est ajustado para aprender e memorizar mais
quando voc faz coisas do que quando voc l sobre as coisas. E zemos os exerccios desaadores,
porm solucionveis, porque isso que a maioria das pessoas prefere.
Usamos mltiplos estilos de aprendizado, porque voc poderia preferir procedimentos passo-a-passo, O Guru dos Padres
enquanto outra pessoa pode desejar entender o geral primeiro, e uma outra poderia apenas querer ver
um exemplo de cdigo. Porm, independentemente da sua preferncia em termos de aprendizado,
todos se beneciaro de ver o mesmo contedo representado em mltiplas maneiras.
Inclumos contedo para ambos os hemisfrios do crebro, porque, quanto mais do seu crebro voc
ativa, maior a probabilidade de voc aprender e memorizar, e maior o tempo durante o qual voc pode
se manter concentrado. Uma vez que trabalhar apenas um lado do crebro freqentemente signica
dar ao outro lado uma chance para descansar, voc pode ter maior produtividade no aprendizado Pontos Importantes
por um perodo de tempo maior.
E inclumos histrias e exerccios que apresentam mais de um ponto de vista, porque o seu crebro est
ajustado para aprender com mais profundidade quando forado a fazer avaliaes e julgamentos.
Inclumos desaos, com exerccios e fazendo perguntas que nem sempre tm uma resposta direta, Quebra-cabeas
porque o seu crebro est ajustado para aprender e memorizar quando precisa trabalhar em algo.
Pense no seguinte: no possvel car em forma apenas olhando as pessoas na academia de ginstica.
Mas zemos o nosso melhor para nos certicarmos de que voc estar trabalhando duro, e nas coisas
certas. Que voc no est gastando uma dendrite extra para processar um exemplo difcil de entender,
ou traduzindo um texto difcil, cheio de jargo ou exageradamente conciso.
Usamos pessoas em histrias, exemplos, guras etc., porque, bem, porque voc uma pessoa. E o
seu crebro presta mais ateno em pessoas do que em coisas.
Usamos uma abordagem 80/20. Partimos do princpio de que, caso voc v tentar um PhD em pro-
jetos de software, este no vai ser o seu nico livro. Assim, no falamos sobre tudo. Apenas sobre as
coisas que voc de fato ir usar.
Eis o que VOC pode fazer para obrigar seu crebro a obedec-lo
OK, zemos a nossa parte. O resto depende de voc. Estas dicas so um ponto de par-
tida; escute o seu crebro e descubra o que funciona para voc e o que no funciona.
Experimente coisas novas.
e
e isto
Recort ta
a por
c o l e n eira
lad
da sua ge
XIX
Use a Cabea Padres de Projetos
V com calma. Quanto mais voc entende, menos voc Beba gua. Muita gua.
precisa memorizar. O seu crebro funciona melhor envolvido por bastante
No leia, apenas. Pare e pense. Quando o livro lhe zer uido. A desidratao (que pode ocorrer antes de voc
uma pergunta, no pule direto para a resposta. Imagine sequer sentir sede) diminui a capacidade cognitiva.
que algum est realmente fazendo lhe a pergunta. Quan-
to mais profundamente voc fora seu crebro a pensar,
maior a sua chance de aprender e memorizar. Fale sobre o assunto. Em voz alta.
Falar ativa uma parte diferente do crebro. Se estiver
tentando entender algo, ou aumentar a sua chance de
Faa os exerccios. Escreva as suas prprias notas. se lembrar do assunto depois, pronuncie-o em voz alta.
Ns os inclumos, mas, se os resolvssemos para voc, Melhor ainda, tente explic-lo em voz alta para algum.
seria como ter algum fazendo os seus abdominais para Voc aprender mais rapidamente e poder descobrir
voc. E no olhe os exerccios simplesmente. Use um idias que voc nem suspeitava que estavam l antes de
lpis. H muita evidncia de que atividade fsica durante comear a ler.
o aprendizado pode melhor-lo.
Oua o seu crebro.
Preste ateno se o seu crebro est cando sobrecarre-
Leia as sees Perguntar no ofende/No existem gado. Se voc se pegar comeando a ler supercialmente
perguntas idiotas. ou esquecendo o que acabou de ler, hora de fazer uma
Isso signica todas elas. Elas no so enfeites opcionais pausa. Depois de passar de um certo ponto, voc no vai
fazem parte do contedo central! No as pule. aprender mais rpido tentando inserir mais informaes
e poder at prejudicar o processo.
Faa deste livro a sua ltima leitura antes de dormir.
Ou pelo menos a ltima leitura desaadora.
Parte do aprendizado (especialmente a transferncia Sinta algo!
para a memria de longo prazo) acontece depois que O seu crebro precisa saber que isto importante. En-
voc fecha o livro. O seu crebro precisa tirar um tempo volva-se com as estrias. Crie as suas prprias legendas
para fazer mais processamentos. Se voc acrescentar algo para as fotos. Resmungar sobre uma piada ruim ainda
durante esse tempo de processamento, parte do que voc melhor do que no sentir nada.
acabou de aprender se perder.
Projete algo!
Aplique o contedo a algo que voc esteja projetando ou
refatore um projeto antigo. Apenas faa algo para obter
alguma experincia alm dos exerccios e atividades deste
livro. Tudo de que voc precisa um lpis e um problema
para resolver... um problema que possa se beneciar de
um ou mais padres de projetos.
Leia-me
Isto uma experincia de aprendizagem, no um livro de referncia. Ns deliberadamen- Usamos um pseudo-UML
modicado mais simples
te retiramos tudo o que poderia atrapalhar o aprendizado do que quer que estivssemos
apresentando na parte do livro em questo. E, na primeira leitura, voc precisa comear do
comeo, porque o livro faz assunes sobre o que voc j viu e aprendeu.
XX
Como usar este livro
realmente, sinceramente, profundamente entenda como e quando us-los. Voc encontrar uma breve meno a alguns
dos outros padres (os muito menos provveis que voc v usar) no apndice. Em todo caso, depois de terminar o Use
a Cabea! Padres de Projetos, voc ser capaz de pegar qualquer catlogo de padres e entrar em ao rapidamente.
As atividades NO so opcionais.
Os exerccios e as atividades no so adicionais; eles fazem parte do contedo central do livro. Alguns deles servem para
ajudar a memorizar, outros a entender, e alguns para ajud-lo a aplicar o que voc aprendeu. No pule os exerccios.
As palavras cruzadas so as nicas coisas que voc no precisa fazer, mas so boas para dar ao seu crebro uma chance
de pensar sobre as palavras a partir de um contexto diferente.
Em alguns casos, no inclumos todos os comandos import necessrios, mas presumimos que, se voc um programa-
dor de Java, voc saber que ArrayList se encontra em java.util, por exemplo. Quando o contedo importado no zer
parte da API J2SE normal, ns o mencionaremos. Tambm colocamos todo o cdigo-fonte na web, para que voc possa
baix-lo. Voc o encontrar em http://www.altabooks.com.br
Alm disso, para nos concentramos na questo do aprendizado do cdigo, no colocamos as nossas classes em pacotes
(em outras palavras, elas esto todas no pacote padro Java). No recomendamos isso no mundo real, e, quando voc
baixar os exemplos de cdigos deste livro, ver que todas as classes esto em pacotes.
XXI
Use a Cabea Padres de Projetos
Revisores Tcnicos
Valentin Crettaz
Jef Cumps Barney Marispini
Dirk Schreckmann
Mark Spritzler
Em memria de Philippe Maquet
1960-2004
O seu impressionante conhecimento tcnico, seu entusiasmo inacabvel e a sua profunda
preocupao com o leitor sempre iro nos inspirar.
Nunca te esqueceremos.
Philippe Maquet
Agradecimentos
Na OReilly:
O nosso muito obrigado a Mike Loukides da OReilly, por ter comeado tudo e ajudado a dar forma ao conceito Use a
Cabea!, transformando-o em uma srie. E um grande obrigado ao motor por trs da srie Use a Cabea!, Tim OReilly.
Obrigado inteligente mame da srie Use a Cabea! Kyle Hart, estrela do rock and roll Ellie Volkhausen pelo seu
inspirado desenho da capa e tambm a Colleen Gorman pela sua infalvel preparao dos originais. Finalmente, obrigado
a Mike Hendrickson por vestir a camisa deste livro de Padres de Projetos e por ter criado a equipe.
XXII
Como usar este livro
de Eric e Elisabeth
Escrever um livro da srie Use a Cabea! um passeio emocionante com dois guias incrveis: Kathy Sierra e Bert Bates.
Com Kathy e Bert voc joga fora todas as convenes de escrita de livros e adentra um mundo cheio de histrias para
contar, teoria de aprendizagem, cincia cognitiva e cultura pop, onde o leitor sempre quem manda. Obrigado a ambos
por nos deixar entrar no seu mundo maravilhoso; esperamos ter feito justia srie Use a Cabea!. Falando srio, foi
uma experincia incrvel. Obrigado por toda a sua cuidadosa orientao, nos levando sempre adiante e, acima de tudo,
por conar a ns o beb de vocs. Vocs dois so certamente incrivelmente espertos e tambm so as pessoas de 29
anos mais legais que conhecemos. Ento... quem mais?
Um muito obrigado a Mike Loukides e a Mike Hendrickson. Mike L. esteve conosco a cada passo do caminho. Mike, o
seu inspirado feedback nos ajudou a dar forma ao livro e o seu encorajamento nos manteve seguindo em frente. Mike
H., obrigado pela sua persistncia ao longo de cinco anos tentando nos fazer escrever um livro sobre padres; nalmente
o zemos e estamos felizes de termos esperado pela srie Use a Cabea!.
Um obrigado muito especial a Erich Gamma, que fez muito mais do que o seu dever ao revisar este livro (ele at le-
vou um esboo consigo nas suas prprias frias). Erich, o seu interesse neste livro nos inspirou e a sua reviso tcnica
completa o melhorou imensamente. Obrigado tambm a toda a Gang of Four pelo seu suporte e interesse, e por fazer
uma apario especial na Objetolndia. Estamos em dbito tambm com Ward Cunningham e com a comunidade dos
padres, que criaram o Portland Pattern Repository (Repositrio de Padres de Portland) um recurso indispensvel
para ns ao escrevermos este livro.
preciso toda uma cidade para escrever um livro tcnico: Bill Pugh e Ken Arnold nos forneceram aconselhamento
especializado sobre o Singleton. Joshua Marinacci forneceu dicas e aconselhamentos inestimveis. O trabalho Why a
Duck? (Por que um Pato?) de John Brewer inspirou o SimUDuck (e camos felizes por ele gostar de patos tambm).
Dan Friedman inspirou o exemplo Little Singleton. Daniel Steinberg agiu como a nossa ligao tcnica e a nossa rede
de suporte emocional. E obrigado a James Dempsey da Apple por nos permitir usar a sua cano sobre o MVC.
Finalmente, um obrigado pessoal equipe de reviso do Javaranch pelas suas excelentes revises e o seu suporte calo-
roso. H mais de vocs neste livro do que vocs pensam.
XXIII
Use a Cabea Padres de Projetos
De Kathy e Bert
Gostaramos de agradecer a Mike Hendrickson por encontrar Eric e Elisabeth... mas no podemos. Por causa desses dois,
ns descobrimos (para o nosso horror) que no somos os nicos capazes de escrever um livro Use a Cabea!.;) Porm,
se os leitores quiserem acreditar que foram realmente a Kathy e o Bert que zeram as coisas legais do livro, bem, quem
somos ns para corrigir os leitores?
Bem-vindo aos
Padres de Projetos
1
Use a Cabea Padres de Projetos
do cdigo de implementao.
swim()
display() O mtodo display() abstrato
// OUTROS mtodos pareci-
dos com duck... j que todos os subtipos de pato
so diferentes.
S preciso adicionar um
Mas agora precisamos dos patos para VOAR mtodo y() classe Duck
e depois todos os patos iro
Os executivos decidiram que fazer os patos voarem o que o simulador para acabar herd-lo. a hora de eu mostrar
com a concorrncia. E claro que o gerente de Joe disse a eles que Joe poderia criar que sou mesmo um gnio OO.
algo em uma semana. Anal, disse o chefe de Joe, ele programador OO... no pode
ser muito difcil.
O que queremos.
Duck
quack()
swim()
display()
Joe
sses
y()
s ub c la O que Joe
Todasdaams fly().
// OUTROS mtodos parecidos com
duck adicionou.
her
ip o s d e Duck...
MallardDuck
RedheadDuck
Outros t
display() { display() {
// parece um pato bravo } // parece um cabea-vermelha }
2
Bem-Vindo aos Padres de Projetos
O que aconteceu?
Joe no percebeu que nem todas as subclasses de
O que ele pen-
Duck deveriam voar. Quando Joe adicionou um sou que fosse
novo comportamento superclasse Duck, tambm
estava adicionando um comportamento que no era
um excelente
apropriado para algumas subclasses Duck. Agora, uso da heran-
objetos inanimados estavam voando no programa
SimUPato.
a para ns de
reutilizao no
Uma atualizao localizada no cdigo causou um efeito
colateral no-local (patos de borracha voadores)! d to certo
quando se trata
de manuteno.
Duck
Ao colocarsfle,y(el)endaeu
quack()
swim()
superclas e de voar a
display()
y()
os que no
Squeak.
3
Use a Cabea Padres de Projetos
RubberDuck
quack() { // squeak}
display() { .// rubber duck }
y() {
// substituir para fazer nada} DecoyDuck
quack() {
// substituir para fazer nada
}
Por isso, ele precisa de uma maneira mais simples para que apenas
alguns (mas no todos) tipos de pato voem ou grasnem.
4
Bem-Vindo aos Padres de Projetos
Duck
swim()
Quackable display()
// OUTROS mtodos parecidos com
Flyable
quack() duck
y()