Escolar Documentos
Profissional Documentos
Cultura Documentos
Use A Cabeca Padroes e Projetos PDF
Use A Cabeca Padroes e Projetos PDF
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 intrepidamente 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 Princpio 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.)
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
Bert desenvolvedor
e arquiteto de software,
mas uma passagem de
dez anos no campo de
inteligncia articial leBert Bates
vou-o a se interessar por
Kathy Sierra
teoria da apren-dizagem
e pelo trei-namento baseado em tecnologia. Ele tem ensinado programao a clientes
desde ento. Recentemente, tornou-se membro da equipe de
desenvolvimento de vrios dos exames de Certicao Java
da Sun, incluindo o novo SCBCD.
Ele passou a primeira dcada da sua carreira em software viajando pelo mundo para ajudar clientes broadcast como a Rdio
Nova Zelndia, o Weather Channel e a rede Arts & Entertainment (A & E). Um dos seus projetos favoritos foi a criao de
um sistema completo de simulao de malha ferroviria para
a Union Pacic Railroad.
Bert um jogador viciado de go de longa data e tem trabalhado
em um programa de go por tempo demais. Ele um guitarrista
razoavelmente bom e agora est tentando aprender banjo. Escreva para ele (em ingls) em terrapin@wickedlysmart.com.
XV
1
27
57
79
125
143
177
205
235
289
325
373
435
459
XVI
XVI
XVI
XVIII
XIX
XXII
XXII
2
4
4
6
7
8
13
14
16
17
18
21
21
23
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
Conhea o Padro Observer
Editora + Assinantes = Padro Observer
Cinco minutos de teatro: um assunto para observao
O Padro Observer denido
O poder da Ligao Leve
Desenvolvendo a Estao Meteorolgica
Implementando a Estao Meteorolgica
Usando o Padro Observer interno de Java
Retrabalhando a Estao Meteorolgica no suporte interno
Ferramentas para sua caixa de ferramentas de projeto
Solues dos exerccios
28
32
32
35
36
38
40
40
45
48
52
55
O Padro Decorator
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 execuo, em vez de no tempo de compilao. Olhe s para mim agora!
Bem-vindo ao Starbuzz Coffee
O Princpio Aberto-Fechado
Siga o Padro Decorator
Construindo um pedido de bebida com Decoradores
O Padro Decorator denido
Decorando nossas bebidas
Escrevendo o cdigo do Starbuzz
Decoradores do mundo real: Java I/O
Escrevendo seu prprio Decorador Java I/O
Ferramentas para sua caixa de ferramentas de projeto
Solues dos exerccios
58
63
64
64
65
66
69
73
74
76
77
Fundamentos OO
Abstrao
Encapsulamento
Polimorsmo
ios OO Herana
varia.
e
Princp
u
q
le o
u
s
posip
a
c
En
e com na.
d
a
id
r
a
D prio elao her e,
r
f
m
ter ac
o e
para in aes.
e
m
a
r
ent
Prog
implem vemente
a
r
a
p
no
s le
design
que
Busque ntre objetos
e
s
ligado m.
e
interag
O Padro Factory
80
81
82
83
85
86
87
89
90
95
95
97
99
100
100
104
105
105
108
113
116
118
120
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 implementao. Ento aperte o cinto este aqui no to simples quanto parece...
O Pequeno Singleton
Dissecando a implementao clssica do Padro Singleton
Entrvista desta semana: Consses de um Singleton
A Fbrica Chocolate
Padro Singleton denido
Hershey, PA
127
128
129
130
132
132
133
134
134
138
141
O Padro Command
144
145
145
147
147
148
148
150
151
IX
154
155
156
158
159
161
164
167
168
170
171
172
175
s s e te m
u m a c la global
fi q u e s e
nto
ri
o
p
e
V
m
u
a
n
S in g le to instncia e forne
uma
apenas
.
la
e
so a
de aces
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
Adaptadores orientados a objetos
Explicando o Padro Adapter
Denindo o Padro Adapter
Adaptadores de objetos e de classes
Adaptadores no mundo real
Adaptando uma Enumerao a um Iterator
E agora algo diferente...
Todo Mundo Quer um Home Theater
Luzes, Cmera e Fachada!
Construindo a fachada do seu home theater
Denio do Padro Facade
O Princpio do Conhecimento Mnimo
Ferramentas para sua caixa de ferramentas de projeto
Solues dos Exerccios
178
178
182
183
184
187
187
190
191
193
194
196
197
201
203
Tomada de
Parede Europia
Adaptador
para CA
Pino
Americano
para CA
O Padro Template
8 Encapsulando Algoritmos
J encapsulamos a criao de objetos, mtodos, interfaces complexas, patos, pizzas... o que vir depois? Vamos encapsular 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.
Preparando algumas classes de caf e ch (em Java)
Senhor, posso abstrair seu Caf e seu Ch?
Aprimorando o projeto
Abstraindo prepareRecipe()
O que ns zemos?
Conhea o Template Method
Vamos fazer um pouco de ch
O que o Template Method pode fazer por ns?
Denindo o Padro Template Method
X
206
208
209
209
212
212
213
214
214
216
217
218
220
220
222
222
223
224
226
227
228
229
232
233
236
236
241
243
244
246
249
252
254
256
261
262
265
267
269
270
271
278
281
282
286
287
O Padro State
314
315
293
295
298
XI
299
301
302
303
310
316
317
320
320
O Padro Proxy
326
328
330
330
333
348
349
350
350
351
353
354
357
359
360
361
366
368
369
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
Reunio de patos
O que ns zemos?
Viso panormica: o diagrama de classes
O Rei dos Padres Compostos
Conhecendo o Modelo-Visualizao-Controlador
Examinando o MVC atravs de lentes coloridas por padres
Usando o MVC para controlar a batida
Conhea a Visualizao do Java DJ
A Visualizao
XII
374
374
393
394
396
397
400
402
402
405
Frio
Quente
E agora o Controlador
Explorando Strategy
Adaptando o Modelo
Agora estamos prontos para o HeartController
Coisas para fazer
MVC e a Internet
Padres de Projetos e Modelo 2
Ferramentas para sua caixa de ferramentas de projeto
Solues dos Exerccios
Padres de Projetos e o Modelo 2
Ferramentas para a sua Caixa de Ferramentas de Projetos
Solues dos Exerccios
408
411
411
412
413
414
419
422
423
443
446
447
14
436
436
438
439
441
442
443
447
449
450
451
451
452
453
453
454
456
457
458
459
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
XIV
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Cabea
Java
Anlise & Projeto Orientado a Objetos (A&POO)
Ajax Iniciao Rpida
HTML com CSS e XHTML
Servlets e JSP
PMP
SQL
Desenvolvimento de Software
JavaScript
C#
PHP & MySQL (2009)
Fsica (2009)
Algebra (2009)
Ajax Profissional (2009)
Estatstica
Ruby on Rails
Introduo
No acredito que
colocaram isso em um
livro sobre padres de
projetos.
os perguEneltaes
em
d
n
po
es
r
,
o
e
s
a
t
es
N
o, P OR QU
que no querisscao laemr:uEmntlivro sobre padres
colocaram os?.
de projet
XV
Voc provavelmente se
dar bem se souber C#
em vez de Java.
keting:
nota do departamento de mar
qual
a
este livro adequado par o. quer um que
tenha um carto de crdit
Sabemos o que voc est pensando.
Como isso aqui pode ser um livro de programao srio?
Pra que tantos desenhos?
realmente possvel aprender desta forma?
O seu crebro tem sede de novidades. Ele est sempre buscando, atento, esperando por algo
fora do comum. Ele foi feito assim, e isso o ajuda a se manter vivo.
Hoje em dia, menos provvel que voc acabe virando o lanche de algum tigre. Mas o seu
crebro continua em alerta. Nunca se sabe.
Ento o que o seu crebro faz com todas as coisas rotineiras, comuns e normais que encontra?
Tudo o que puder para impedir que elas interram com verdadeiro trabalho do crebro registrar as coisas que so importantes. Ele no se d ao trabalho de armazenar as coisas chatas;
elas nunca passam pelo ltro isto obviamente no importante.
Como o seu crebro sabe o que importante? Suponha que voc saia para uma caminhada e
um tigre pule na sua frente, o que acontece dentro da sua cabea e do seu corpo?
Os neurnios disparam. As emoes aumentam. Os elementos qumicos borbulham.
E assim que o seu crebro sabe que...
XVI
Mas imagine que voc esteja em casa, ou em uma biblioteca. uma rea
segura, aconchegante e sem tigres. Voc est estudando. Preparando-se
para um exame. Ou tentando aprender algum tpico tcnico difcil que
o seu chefe acha que s vai levar uma semana, dez dias no mximo.
Apenas um problema. O seu crebro est tentando lhe fazer um
grande favor. Est tentando certicar-se de que este contedo
obviamente sem importncia no gaste recursos escassos. Recursos
esses que seriam melhor gastos armazenando as coisas realmente
importantes. Como tigres. Como o perigo do fogo. Como voc no
deve nunca mais praticar esqui na neve de calo.
acha ale
o
r
b
e
r
c
seu IST O no v r.
que na memoriza
a pe
o um aprendiz.
de Use a Cabea! com
Ns pensamos no leitor
a!:
aprendizado Use a Cabe
Alguns dos princpios do
nas
ape
que
eis do
voc
srio demais. Em que
relao TEM-UM?
um
e
ant
dur
te
san
res
inte
sa
ateno: em uma conver
jantar ou em uma aula?
no do leitor. Todos j
Consiga e mantenha a ate
nte quero aprender
lme
rea
tivemos a experincia eu
da pgina um acordado.
abstract void roam(); isto mas no consigo passar
o em coisas que saiam do
O seu crebro presta aten
tes, estranhas, impressan
comum, que sejam interes
O mtodo no tem
ender um novo e difcil
corpo! Finalize-o com
sionantes, inesperadas. Apr
ser enfadonho. O seu
ponto-e-vrgula.
assunto tcnico no precisa
rpido se no for.
is
crebro aprender muito ma
a sua capacidade de
Ns sabemos, hoje em dia, que
Envolva as emoes do leitor.
se lembra das coisas
Voc
al.
cion
ito do contedo emo
lembrar-se de algo depende mu
, no estamos falando
se lembra quando sente algo. No
com as quais se importa. Voc
orro. Estamos falando
o sobre um garoto e o seu cach
de histrias de partir o cora
?, e da sensao de
isso
que
iosidade, diverso, o
cur
sa,
pre
sur
o
com
s
e
emo
de
-cabea, aprende algo
ndo voc resolve um quebra
Eu sou demais! que vem qua
e algo que o Bob eu
difcil ou percebe que voc sab
que as demais pessoas acham
no sabe.
aria
do departamento de engenh
sou mais tcnico do que vs
XVII
Gostaria de saber
como fazer o meu
crebro se lembrar de
tudo isto...
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 exaustiva. 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.
objetos depe
ndentes
Usamos guras, porque o seu crebro est ajustado para imagens, e no texto. No que diz respeito ao seu crebro, uma
imagem realmente vale por 1.024 palavras. E, nos casos em que texto e imagens trabalham juntos, ns inserimos o texto nas
imagens, porque o seu crebro trabalha de modo mais ecaz quando o texto se encontra dentro da coisa a que se refere, em
vez de em uma legenda ou enterrado em alguma parte do texto.
Usamos a redundncia, dizendo a mesma coisa de diferentes
relao de um-para-muitos
formas e com diferentes tipos de mdia, e com mltiplos sentidos,
para aumentar a chance de o contedo ser codicado em mais de
Objeto Cachorro
uma rea do seu crebro.
Usamos conceitos e imagens de formas inesperadas, porque o seu
Objeto Subject
crebro est ajustado para captar novidades, e usamos imagens
e idias com pelo menos algum contedo emocional, porque o
Objeto Pato
Objeto Gato
seu crebro est ajustado para prestar ateno na bioqumica das
Atualizao/Noticao automtica
emoes. Aquilo que o faz sentir algo tem maior probabilidade de
ser lembrado, mesmo se o sentimento no passar de um pouco de
Objeto Rato
Observadores
humor, surpresa ou interesse.
XVIII
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
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
por um perodo de tempo maior.
Pontos Importantes
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,
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.
Quebra-cabeas
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 projetos 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 partida; 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
Leia-me
Isto uma experincia de aprendizagem, no um livro de referncia. Ns deliberadamente 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.
Usamos um pseudo-UML
modicado mais simples
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.
Revisores Tcnicos
Valentin Crettaz
Jef Cumps
Barney Marispini
Johannes de Jong
Mark Spritzler
Dirk Schreckmann
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
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 levou 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 caloroso. H mais de vocs neste livro do que vocs pensam.
XXIII
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
Agora que estamos
morando em Objectville, temos que
entrar nos Padres de Projetos...
todo mundo est fazendo isso. Logo,
seremos a sensao do grupo de
padres de Jim e Betty nas
quartas-feiras noite!
Duck
quack()
swim()
display()
// OUTROS mtodos parecidos com duck...
RedheadDuck
MallardDuck
display() {
// parece um pato bravo }
display() {
// parece um cabea-vermelha }
Ano passado, a empresa esteve sob presso crescente dos concorrentes. Aps uma sesso de brainstorming de uma
semana jogando golfe, os executivos da empresa acham que est na hora de fazer uma grande inovao. Eles precisam
de algo realmente impressionante para mostrar na reunio de acionistas em Maui na semana seguinte.
S preciso adicionar um
mtodo y() classe Duck
e depois todos os patos iro
herd-lo. a hora de eu mostrar
que sou mesmo um gnio OO.
O que queremos.
Duck
quack()
swim()
display()
y()
sses
a
l
c
b
u
s
Todasdaams fly().
her
MallardDuck
display() {
// parece um pato bravo }
O que Joe
adicionou.
RedheadDuck
display() {
// parece um cabea-vermelha }
Joe
Duck...
e
d
s
o
p
i
Outros t
O que aconteceu?
Duck
Ao colocarsfle,y(el)endaeu
superclas e de voar a
a capacidad patos, incluindo
T ODOS os deveriam voar.
os que no
MallardDuck
display() {
// parece um pato bravo }
quack()
swim()
display()
y()
// OUTROS mtodos parecidos com
duck
RedheadDuck
display() {
// parece um cabea-vermelha }
RubberDuck
quack() {
// substitudo por Squeak
}
display() {
// parece um pato de borracha
}
Patos de borracha
no grasnam,
ento quack()
substitudo por
Squeak.
Eu poderia substituir
sempre o mtodo y()
em pato de borracha,
como fao com o
mtodo quack()...
RubberDuck
quack() { // squeak}
display() { .// rubber duck }
y() {
// substituir para fazer nada}
DecoyDuck
quack() {
// substituir para fazer nada
}
display() { // decoy duck}
y() {
// substituir para fazer nada
}
Duck
swim()
display()
// OUTROS mtodos parecidos com
duck
Quackable
Flyable
quack()
y()
MallardDuck
display()
y()
quack()
RedheadDuck
display()
y()
quack()
RubberDuck
display()
quack()
DecoyDuck
display()