252 Head First Design Patterns
Chapter 1. Welcome to Design Patterns Table of Contents
.............................................................. 35
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.comWKLV LV D QHZ FKDSWHU
6RPHRQH KDV DOUHDG\ VROYHG \RXU SUREOHPV ,Q WKLV FKDSWHU \RX¶OO OHDUQ
ZK\ DQG KRZ \RX FDQ H[SORLW WKH ZLVGRP DQG OHVVRQV OHDUQHG E\ RWKHU GHYHORSHUV ZKR¶YH EHHQ GRZQ WKH VDPH GHVLJQ SUREOHP URDG DQG VXUYLYHG WKH WULS %HIRUH ZH¶UH GRQH ZH¶OO ORRN DW WKH XVH DQG EHQH¿ WV RI GHVLJQ SDWWHUQV ORRN DW VRPH NH\ 22 GHVLJQ SULQFLSOHV DQG ZDON WKURXJK DQ H[DPSOH RI KRZ RQH SDWWHUQ ZRUNV 7KH EHVW ZD\ WR XVH SDWWHUQV LV WR ORDG
\RXU EUDLQ ZLWK WKHP DQG WKHQ UHFRJQL]H SODFHV LQ \RXU GHVLJQV DQG H[LVWLQJ DSSOLFDWLRQV
ZKHUH \RX FDQ DSSO\ WKHP ,QVWHDG RI FRGH UHXVH ZLWK SDWWHUQV \RX JHW H[SHULHQFH UHXVH
:HOFRPH WR
'HVLJQ 3DWWHUQV
Intro to Design Patterns1RZ WKDW ZH·UH OLYLQJ LQ 2EMHFWYLOOH ZH·YH MXVW JRW
ZH·OO EH WKH KLW RI -LP DQG %HWW\·V :HGQHVGD\ QLJKW
4
5
4 Chapter 1. Welcome to Design Patterns Page 1
WR JHW LQWR 'HVLJQ 3DWWHUQV
SDWWHUQV JURXS
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
VXEW\SHV ORRN GLIIHUHQW
&KDSWHU 1\ [\IZ\ML _Q\P I [QUXTM ;QU=,]KS IXX
(DFK GXFN VXEW\SH LV UHVSRQVLEOH IRU LPSOHPHQWLQJ LWV RZQ GLVSOD\ EHKDYLRU
Chapter 1. Welcome to Design Patterns Page 2
6LP8'XFN
7KH GLVSOD\ PHWKRG LV DEVWUDFW VLQFH DOO GXFN
1V \PM TI[\ aMIZ \PM KWUXIVa PI[ JMMV ]VLMZ QVKZMI[QVO XZM[[]ZM NZWU KWUXM\Q\WZ[ )N\MZ I _MMS TWVO WNN [Q\M JZIQV[\WZUQVO [M[[QWV W^MZ OWTN \PM KWUXIVa M`MK]\Q^M[ \PQVS Q\¼[ \QUM NWZ I JQO QVVW^I\QWV <PMa VMML [WUM\PQVO ZMITTa QUXZM[[Q^M \W [PW_ I\ \PM ]XKWUQVO [PIZMPWTLMZ[ UMM\QVO QV 5I]Q VM`\ _MMS
VXSHUFODVV WDNHV FDUH RI WKH LPSOHPHQWDWLRQ FRGH
IRU KRZ LW ORRNV RQ WKH VFUHHQ $OO GXFNV TXDFN DQG VZLP WKH
5HGKHDG'XFN /RWV RI RWKHU W\SHV RI GXFNV LQKHULW IURP WKH 'XFN FODVV
2WM _WZS[ NWZ I KWUXIVa \PI\ UISM[ I PQOPTa []KKM[[N]T L]KS XWVL [QU]TI\QWV OIUM ;QU=,]KS <PM OIUM KIV [PW_ I TIZOM ^IZQM\a WN L]KS [XMKQM[ [_QUUQVO IVL UISQVO Y]IKSQVO [W]VL[ <PM QVQ\QIT LM[QOVMZ[ WN \PM [a[\MU ][ML [\IVLIZL 77 \MKPVQY]M[ IVL KZMI\ML WVM ,]KS []XMZKTI[[ NZWU _PQKP ITT W\PMZ L]KS \aXM[ QVPMZQ\
GLVSOD\ ^ ORRNV OLNH D UHGKHDG `
0DOODUG'XFN
27+(5 GXFN OLNH PHWKRGV GLVSOD\ ^ ORRNV OLNH D PDOODUG `
GLVSOD\
VZLP
TXDFN
'XFN
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 3
LQWUR WR 'HVLJQ 3DWWHUQV
- ]\ VW_ _M VMML \PM L]KS[ \W .4A
<PM M`MK]\Q^M[ LMKQLML \PI\ Æ aQVO L]KS[ Q[ R][\ _PI\ \PM [QU]TI\WZ VMML[ \W JTW_ I_Ia \PM W\PMZ L]KS [QU KWUXM\Q\WZ[ )VL WN KW]Z[M 2WM¼[ UIVIOMZ \WTL \PMU Q\¼TT JM VW XZWJTMU NWZ 2WM \W R][\ _PQX [WUM\PQVO ]X QV I _MMS ¹)N\MZ ITTº [IQL
, MXVW QHHG WR DGG D Á \
2WM¼[ JW[[ ¹PM¼[ IV 77 XZWOZIUUMZ PW_ PIZL KIV Q\ JM'º PHWKRG LQ WKH 'XFN FODVV DQG
WKHQ DOO WKH GXFNV ZLOO LQKHULW LW
1RZ·V P\ WLPH WR UHDOO\ VKRZ P\
WUXH 22 JHQLXV
- RH :KDW ZH ZDQW
'XFN
TXDFN
VZLP
GLVSOD\
IO\ :KDW -RH DGGHG
27+(5 GXFN OLNH PHWKRGV
$OO VXEFODVVHV LQKHULW IO\
0DOODUG'XFN
5HGKHDG'XFN
2WKHU 'XFN W\SHV
GLVSOD\ ^ GLVSOD\ ^ ORRNV OLNH D PDOODUG ` ORRNV OLNH D UHGKHDG `
\RX DUH KHUH
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
VRPHWKLQJ ZHQW ZURQJ
- ]\ [WUM\PQVO _MV\ PWZZQJTa _ZWVO
- RH ,·P DW WKH
WKH VFUHHQ :DV WKLV \RXU LGHD RI
VRPH WLPH RQ 0RQVWHU FRP
RI LQKHULWDQFH
LQFOXGLQJ WKRVH WKDW
0DOODUG'XFN
Chapter 1. Welcome to Design Patterns Page 4
VKRXOGQ·W
VXSHUFODVV KH JDYH IO\LQJ DELOLW\ WR $// GXFNV
VR TXDFN LV RYHUUULGGHQ WR ´6TXHDNµ %\ SXWWLQJ IO\ LQ WKH
5XEEHU GXFNV GRQ·W TXDFN
5XEEHU'XFN 'XFN
TXDFN ^ RYHUULGGHQ WR 6TXHDN ` GLVSOD\ ^ ORRNV OLNH D UXEEHUGXFN `
5HGKHDG'XFN
GLVSOD\ ^ ORRNV OLNH D UHGKHDG `
GLVSOD\ ^ ORRNV OLNH D PDOODUG `
&KDSWHU :KDW KH WKRXJKW ZDV D JUHDW XVH
IO\ 27+(5 GXFN OLNH PHWKRGV
GLVSOD\
VZLP
TXDFN
) TWKITQbML ]XLI\M \W \PM KWLM KI][ML I VWV TWKIT [QLM MNNMK\ Æ aQVO Z]JJMZ L]KS[ :KDW KDSSHQHG"
2WM ILLML VM_ JMPI^QWZ \W \PM ,]KS []XMZKTI[[ PM _I[ IT[W ILLQVO JMPI^QWZ \PI\ _I[ VW\ IXXZWXZQI\M NWZ [WUM ,]KS []JKTI[[M[ 0M VW_ PI[ Æ aQVO QVIVQUI\M WJRMK\[ QV \PM ;QU=,]KS XZWOZIU
2WM NIQTML \W VW\QKM \PI\ VW\ ITT []JKTI[[M[ WN ,]KS [PW]TL Æ a ?PMV
D MRNH" <RX PLJKW ZDQW WR VSHQG
7KH\ MXVW JDYH D GHPR DQG WKHUH ZHUH UXEEHU GXFNLHV Á \LQJ DURXQG
VKDUHKROGHU·V PHHWLQJ
,W·V NLQG RI FXWH
GRQ·W VHH ZK\ WKH\ FDQ·W MXVW FDOO LW D ´IHDWXUHµ
2. VR WKHUH·V D VOLJKW Á DZ LQ P\ GHVLJQ ,
IRU WKH SXUSRVH RI UHXVH KDVQ·W WXUQHG RXW VR ZHOO ZKHQ LW FRPHV WR PDLQWHQDQFH
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 5
LQWUR WR 'HVLJQ 3DWWHUQV
ZH DGG ZRRGHQ GHFR\ GXFNV
WKH TXDFN PHWKRG
'HFR\'XFN
VXSSRVHG WR Á \ RU TXDFN
WR WKH SURJUDP" 7KH\ DUHQ·W
%XW WKHQ ZKDW KDSSHQV ZKHQ
RYHUULGH WR GR QRWKLQJ
RYHUULGH WR GR QRWKLQJ
- HUH·V DQRWKHU FODVV LQ WKH KLHUDUFK\ QRWLFH WKDW OLNH
5XEEHU'XFN LW GRHVQ·W IO\ EXW LW DOVR GRHVQ·W TXDFN
`
\RX DUH KHUH
IO\ ^
` GLVSOD\ ^ GHFR\ GXFN`
TXDFN ^
XZW^QLM ,]KS JMPI^QWZ' +PWW[M ITT \PI\ IXXTa
R - ,]KS[ KIV¼\ Æ a IVL Y]IKS I\ \PM [IUM \QUM R . +PIVOM[ KIV ]VQV\MV\QWVITTa INNMK\ W\PMZ L]KS[ ?PQKP WN \PM NWTTW_QVO IZM LQ[IL^IV\IOM[ WN ][QVO QVPMZQ\IVKM \W
6KDUSHQ \RXU SHQFLO R ) +WLM Q[ L]XTQKI\ML IKZW[[ []JKTI[[M[ R * :]V\QUM JMPI^QWZ KPIVOM[ IZM LQNÅ K]T\ R + ?M KIV¼\ UISM L]KS[ LIVKM R , 0IZL \W OIQV SVW_TMLOM WN ITT L]KS JMPI^QWZ[
5XEEHU'XFN
IO\ ^ RYHUULGH WR GR QRWKLQJ `
TXDFN ^ VTXHDN` GLVSOD\ ^ UXEEHU GXFN `
, FRXOG DOZD\V MXVW RYHUULGH WKH Á \ PHWKRG LQ UXEEHU GXFN WKH ZD\ , DP ZLWK
2WM \PQVS[ IJW]\ QVPMZQ\IVKM
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 6
LQKHULWDQFH LV QRW WKH DQVZHU
0W_ IJW]\ IV QV\MZNIKM'
2WM ZMITQbML \PI\ QVPMZQ\IVKM XZWJIJTa _I[V¼\ \PM
, FRXOG WDNH WKH Á \ RXW RI WKH
IV[_MZ JMKI][M PM R][\ OW\ I UMUW \PI\ [Ia[ \PI\
'XFN VXSHUFODVV DQG PDNH D
\PM M`MK]\Q^M[ VW_ _IV\ \W ]XLI\M \PM XZWL]K\ M^MZa )O\DEOH LQWHUIDFH ZLWK D Á \
[Q` UWV\P[ QV _Ia[ \PMa PI^MV¼\ aM\ LMKQLML WV 2WM
PHWKRG 7KDW ZD\ RQO\ WKH GXFNV WKDW
SVW_[ \PM [XMK _QTT SMMX KPIVOQVO IVL PM¼TT JM NWZKML
DUH
VXSSRVHG WR Á \ ZLOO LPSOHPHQW WKDW
\W TWWS I\ IVL XW[[QJTa W^MZZQLM Æ a IVL Y]IKS NWZ
LQWHUIDFH DQG KDYH D Á \ PHWKRG DQG , PLJKW DV ZHOO PDNH D 4XDFNDEOH WRR
M^MZa VM_ ,]KS []JKTI[[ \PI\¼[ M^MZ ILLML \W \PM
VLQFH QRW DOO GXFNV FDQ TXDFN
XZWOZIU NWZM^MZ ;W PM VMML[ I KTMIVMZ _Ia \W PI^M WVTa [WUM J]\ VW\
ITT WN \PM L]KS \aXM[ Æ a WZ Y]IKS 'XFN
VZLP
4XDFNDEOH )O\DEOH GLVSOD\ TXDFN
27+(5 GXFN OLNH PHWKRGV
IO\ 'HFR\'XFN
0DOODUG'XFN
5HGKHDG'XFN
5XEEHU'XFN
GLVSOD\ GLVSOD\ GLVSOD\ GLVSOD\
IO\
IO\ TXDFN TXDFN TXDFN
:KDW GR <28 WKLQN DERXW WKLV GHVLJQ" &KDSWHU
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
\RX DUH KHUH
7KDW LV OLNH WKH GXPEHVW LGHD \RX·YH FRPH XS ZLWK &DQ \RX VD\
´GXSOLFDWH FRGHµ" ,I \RX WKRXJKW
KDYLQJ WR RYHUULGH D IHZ PHWKRGV ZDV EDG
WR PDNH D OLWWOH FKDQJH WR WKH Á\LQJ EHKDYLRU LQ DOO RI WKH Á\LQJ
'XFN VXEFODVVHV"
?PI\ _W]TL aW] LW QN aW] _MZM 2WM' ?M SVW_ \PI\ VW\ ITT WN \PM []JKTI[[M[ [PW]TL PI^M ÆaQVO WZ Y]IKSQVO JMPI^QWZ [W QVPMZQ\IVKM Q[V¼\ \PM ZQOP\ IV[_MZ *]\ _PQTM PI^QVO
\PM []JKTI[[M[ QUXTMUMV\ .TaIJTM IVL WZ 9]IKSIJTM [WT^M[ XIZ\ WN \PM XZWJTMU VW QVIXXZWXZQI\MTa ÆaQVO Z]JJMZ L]KS[ Q\ KWUXTM\MTa LM[\ZWa[ KWLM ZM][M NWZ \PW[M JMPI^QWZ[ [W Q\ R][\ KZMI\M[ I LQNNMZMV\ UIQV\MVIVKM VQOP\UIZM )VL WN KW]Z[M \PMZM UQOP\ JM UWZM \PIV WVM SQVL WN ÆaQVO JMPI^QWZ M^MV IUWVO \PM L]KS[ \PI\ LW Æa )\ \PQ[ XWQV\ aW] UQOP\ JM _IQ\QVO NWZ I ,M[QOV 8I\\MZV \W KWUM ZQLQVO QV WV I _PQ\M PWZ[M IVL [I^M \PM LIa *]\ _PI\ N]V _W]TL \PI\ JM' 6W _M¼ZM OWQVO \W ÅO]ZM W]\ I [WT]\QWV \PM WTL NI[PQWVML _Ia¸ Ja IXXTaQVO OWWL 77 [WN\_IZM LM[QOV XZQVKQXTM[
:RXOGQ·W LW EH GUHDP\ LI RQO\ WKHUH ZHUH D ZD\ WR EXLOG
VRIWZDUH VR WKDW ZKHQ ZH QHHG WR FKDQJH LW ZH FRXOG GR VR ZLWK WKH OHDVW SRVVLEOH LPSDFW RQ WKH H[LVWLQJ FRGH"
:H FRXOG VSHQG OHVV WLPH UHZRUNLQJ FRGH DQG PRUH PDNLQJ WKH SURJUDP GR FRROHU WKLQJV
Chapter 1. Welcome to Design Patterns Page 7
LQWUR WR 'HVLJQ 3DWWHUQV
KRZ DUH \RX JRQQD IHHO ZKHQ \RX QHHG
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 8
FKDQJH LV FRQVWDQW
<PM WVM KWV[\IV\ QV [WN\ _IZM LM^MTWXUMV\
7SIa _PI\¼[ \PM WVM \PQVO aW] KIV IT_Ia[ KW]V\ WV QV [WN\_IZM LM^MTWXUMV\'
6W UI\\MZ _PMZM aW] _WZS _PI\ aW]¼ZM J]QTLQVO WZ _PI\ TIVO]IOM aW] IZM XZWOZIUUQVO QV _PI\¼[ \PM WVM \Z]M KWV[\IV\ \PI\ _QTT JM _Q\P aW] IT_Ia[' &+$1*(
][M I UQZZWZ \W [MM \PM IV[_MZ
6W UI\\MZ PW_ _MTT aW] LM[QOV IV IXXTQKI\QWV W^MZ \QUM IV
IXXTQKI\QWV U][\ OZW_ IVL KPIVOM WZ Q\ _QTT LQM
6KDUSHQ \RXU SHQFLO /RWV RI WKLQJV FDQ GULYH FKDQJH /LVW VRPH UHDVRQV \RX·YH KDG WR FKDQJH FRGH LQ \RXU DSSOLFDWLRQV ZH SXW LQ D FRXSOH RI RXU RZQ WR JHW \RX VWDUWHG
0\ FXVWRPHUV RU XVHUV GHFLGH WKH\ ZDQW VRPHWKLQJ HOVH RU WKH\ ZDQW QHZ IXQFWLRQDOLW\ 0\ FRPSDQ\ GHFLGHG LW LV JRLQJ ZLWK DQRWKHU GDWDEDVH YHQGRU DQG LW LV DOVR SXUFKDVLQJ LWV GDWD IURP DQRWKHU VXSSOLHU WKDW XVHV D GLIIHUHQW GDWD IRUPDW $UJK
&KDSWHU
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 9
LQWUR WR 'HVLJQ 3DWWHUQVBMZWQVO QV WV \PM XZWJTMU ;W _M SVW_ ][QVO QVPMZQ\IVKM PI[V¼\ _WZSML W]\ ^MZa _MTT [QVKM \PM L]KS JMPI^QWZ SMMX[ KPIVOQVO IKZW[[ \PM []JKTI[[M[ IVL Q\¼[
VW\ IXXZWXZQI\M NWZ ITT []JKTI[[M[ \W PI^M \PW[M JMPI^QWZ[ <PM .TaIJTM IVL 9]IKSIJTM QV\MZNIKM [W]VLML XZWUQ[QVO I\ ÅZ[\¸WVTa L]KS[ \PI\ ZMITTa LW Æa _QTT JM .TaIJTM M\K ¸M`KMX\ 2I^I QV\MZNIKM[ PI^M VW QUXTMUMV\I\QWV KWLM [W VW KWLM ZM][M )VL \PI\ UMIV[ \PI\ _PMVM^MZ aW] VMML \W UWLQNa I JMPI^QWZ aW]¼ZM NWZKML \W \ZIKS LW_V IVL KPIVOM Q\ QV ITT \PM LQNNMZMV\ []JKTI[[M[ _PMZM \PI\ JMPI^QWZ Q[ LMÅVML XZWJIJTa QV\ZWL]KQVO VM_ J]O[ ITWVO \PM _Ia 4]KSQTa \PMZM¼[ I LM[QOV XZQVKQXTM NWZ R][\ \PQ[ [Q\]I\QWV
7DNH ZKDW YDULHV DQG ´HQFDSVXODWHµ LW VR LW ZRQ·W 'HVLJQ 3ULQFLSOH
DIIHFW WKH UHVW RI \RXU FRGH ,GHQWLI\ WKH DVSHFWV RI \RXU DSSOLFDWLRQ WKDW YDU\ DQG VHSDUDWH
WKHP IURP ZKDW VWD\V WKH VDPH
7KH UHVXOW" )HZHU
2XU ILUVW RI PDQ\ GHVLJQ
XQLQWHQGHG FRQVHTXHQFHV SULQFLSOHV :H·OO VSHQG PRUH WLPH RQ WKHVH WKUXRJKRXW WKH ERRN
IURP FRGH FKDQJHV DQG PRUH
1V W\PMZ _WZL[ QN aW]¼^M OW\ [WUM I[XMK\ WN aW]Z KWLM \PI\ Q[
I OH[LELOLW\ LQ \RXU V\VWHPV KPIVOQVO [Ia _Q\P M^MZa VM_ ZMY]QZMUMV\ \PMV aW] SVW_ aW]¼^M OW\ I JMPI^QWZ \PI\ VMML[ \W JM X]TTML W]\ IVL [MXIZI\ML NZWU ITT \PM [\]NN \PI\ LWM[V¼\ KPIVOM
0MZM¼[ IVW\PMZ _Ia \W \PQVS IJW]\ \PQ[ XZQVKQXTM" \ISM \PM XIZ\[ \PI\ ^IZa IVL MVKIX[]TI\M \PMU [W \PI\ TI\MZ aW] KIV
IT\MZ WZ M`\MVL \PM XIZ\[ \PI\ ^IZa _Q\PW]\ INNMK\QVO \PW[M \PI\ LWV¼\ )[ [QUXTM I[ \PQ[ KWVKMX\ Q[ Q\ NWZU[ \PM JI[Q[ NWZ ITUW[\ M^MZa LM[QOV XI\\MZV )TT XI\\MZV[ XZW^QLM I _Ia \W TM\ [WUM XIZ\ WN I [a[\MU
^IZa QVLMXMVLMV\Ta WN ITT W\PMZ XIZ\[
7SIa \QUM \W X]TT \PM L]KS JMPI^QWZ W]\ WN \PM ,]KS KTI[[M[ \RX DUH KHUH
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
&KDSWHU ;MXIZI\QVO _PI\ KPIVOM[ NZWU _PI\ [\Ia[ \PM [IUM
'XFN FODVV
7KH 'XFN FODVV LV VWLOO WKH VXSHUFODVV RI DOO GXFNV EXW ZH DUH SXOOLQJ RXW WKH IO\ DQG TXDFN EHKDYLRUV DQG SXWWLQJ WKHP LQWR DQRWKHU FODVV
VWUXFWXUH
9DULRXV EHKDYLRU LPSOHPHQWDWLRQV DUH JRLQJ WR OLYH KHUH
1RZ IO\LQJ DQG TXDFNLQJ HDFK JHW
WKHLU RZQ VHW RI FODVVHV
'XFN %HKDYLRUV4XDFNLQJ %HKDYLR UV
)O\LQJ %HKDYLRU
V
3XOO RXW ZKDW YDULHV
?PMZM LW _M [\IZ\' )[ NIZ I[ _M KIV \MTT W\PMZ \PIV \PM XZWJTMU[ _Q\P Æa IVL Y]IKS \PM ,]KS KTI[[ Q[ _WZSQVO _MTT IVL \PMZM IZM VW W\PMZ XIZ\[ WN Q\ \PI\ IXXMIZ \W ^IZa WZ KPIVOM NZMY]MV\Ta ;W W\PMZ \PIV I NM_ [TQOP\ KPIVOM[ _M¼ZM OWQVO \W XZM\\a U]KP TMI^M \PM ,]KS KTI[[ ITWVM
6W_ \W [MXIZI\M \PM ¹XIZ\[ \PI\ KPIVOM NZWU \PW[M \PI\ [\Ia \PM [IUMº _M IZM OWQVO \W KZMI\M \_W [M\[ WN KTI[[M[ \W\ITTa IXIZ\ NZWU ,]KS WVM NWZ Æa IVL WVM NWZ Y]IKS -IKP [M\ WN KTI[[M[ _QTT PWTL
ITT \PM QUXTMUMV\I\QWV[ WN \PMQZ ZM[XMK\Q^M JMPI^QWZ .WZ QV[\IVKM _M UQOP\ PI^M WVM KTI[[ \PI\ QUXTMUMV\[ Y]IKSQVO IVW\PMZ \PI\ QUXTMUMV\[ [Y]MISQVO IVL IVW\PMZ \PI\ QUXTMUMV\[ [QTMVKM :H NQRZ WKDW Á\ DQG TXDFN DUH WKH SDUWV RI WKH 'XFN FODVV WKDW YDU\ DFURVV GXFNV
7R VHSDUDWH WKHVH EHKDYLRUV IURP WKH 'XFN FODVV ZH·OO SXOO ERWK PHWKRGV RXW RI WKH 'XFN FODVV DQG FUHDWH D QHZ VHW RI FODVVHV WR UHSUHVHQW HDFK EHKDYLRU SXOO RXW ZKDW YDULHV
Chapter 1. Welcome to Design Patterns Page 10
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 11
LQWUR WR 'HVLJQ 3DWWHUQV
,M[QOVQVO \PM ,]KS *MPI^QWZ[ ;W PW_ IZM _M OWQVO \W LM[QOV \PM [M\ WN KTI[[M[ \PI\ QUXTMUMV\ \PM Æ a IVL Y]IKS JMPI^QWZ[' ?M¼L TQSM \W SMMX \PQVO[ Æ M`QJTM# IN\MZ ITT Q\ _I[ \PM QVÆ M`QJQTQ\a QV \PM L]KS JMPI^QWZ[ \PI\ OW\ ][ QV\W \ZW]JTM QV \PM Å Z[\ XTIKM )VL _M SVW_ \PI\ _M _IV\ \W I[[QOV JMPI^QWZ[ \W \PM QV[\IVKM[ WN ,]KS .WZ M`IUXTM _M UQOP\ _IV\ \W QV[\IV\QI\M I VM_ 5ITTIZL,]KS QV[\IVKM
IVL QVQ\QITQbM Q\ _Q\P I [XMKQÅ K \aXM WN Æ aQVO JMPI^QWZ )VL _PQTM _M¼ZM \PMZM _Pa VW\ UISM []ZM \PI\ _M KIV KPIVOM \PM JMPI^QWZ WN
I L]KS LaVIUQKITTa' 1V W\PMZ _WZL[ _M [PW]TL QVKT]LM JMPI^QWZ )URP QRZ RQ WKH 'XFN
[M\\MZ UM\PWL[ QV \PM ,]KS KTI[[M[ [W \PI\ _M KIV [Ia KPIVOM \PM
5ITTIZL,]KS¼[ Æ aQVO JMPI^QWZ I\ Z]V\QUM EHKDYLRUV ZLOO OLYH LQ D
/Q^MV \PM[M OWIT[ TM\¼[ TWWS I\ W]Z [MKWVL LM[QOV XZQVKQXTM"
VHSDUDWH FODVV³D FODVV WKDW LPSOHPHQWV D SDUWLFXODU 'HVLJQ 3ULQFLSOH
3URJUDP WR DQ LQWHUIDFH QRW DQ EHKDYLRU LQWHUIDFH LPSOHPHQWDWLRQ
7KDW ZD\ WKH 'XFN FODVVHV ?M¼TT ][M IV QV\MZNIKM \W ZMXZM[MV\ MIKP JMPI^QWZ · NWZ QV[\IVKM .Ta*MPI^QWZ IVL 9]IKS*MPI^QWZ · IVL MIKP QUXTMUMV\I\QWV WN I
ZRQ·W QHHG WR NQRZ DQ\ RI JMPI^QWZ _QTT QUXTMUMV\ WVM WN \PW[M QV\MZNIKM[ ;W \PQ[ \QUM Q\ _WV¼\ JM \PM ,]KS KTI[[M[ \PI\ _QTT QUXTMUMV\ \PM
WKH LPSOHPHQWDWLRQ GHWDLOV
Æ aQVO IVL Y]IKSQVO QV\MZNIKM[ 1V[\MIL _M¼TT UISM I [M\ WN KTI[[M[ _PW[M MV\QZM ZMI[WV NWZ TQ^QVO Q[ \W ZMXZM[MV\ I JMPI^QWZ NWZ M`IUXTM
IRU WKHLU RZQ EHKDYLRUV
¹[Y]MISQVOº IVL Q\¼[ \PM JMPI^QWZ KTI[[ ZI\PMZ \PIV \PM ,]KS KTI[[ \PI\ _QTT QUXTMUMV\ \PM JMPI^QWZ QV\MZNIKM <PQ[ Q[ QV KWV\ZI[\ \W \PM _Ia _M _MZM LWQVO \PQVO[ JMNWZM _PMZM
LQWHUIDFH!! )O\%HKDYLRU
I JMPI^QWZ MQ\PMZ KIUM NZWU I KWVKZM\M QUXTMUMV\I\QWV QV \PM
IO\ []XMZKTI[[ ,]KS WZ Ja XZW^QLQVO I [XMKQITQbML QUXTMUMV\I\QWV QV \PM []JKTI[[ Q\[MTN 1V JW\P KI[M[ _M _MZM ZMTaQVO WV IV QUXTMUMV\I\QWV ?M
_MZM TWKSML QV\W ][QVO \PI\ [XMKQÅ K QUXTMUMV\I\QWV IVL \PMZM _I[ VW ZWWU NWZ KPIVOQVO W]\ \PM JMPI^QWZ W\PMZ \PIV _ZQ\QVO UWZM KWLM )O\:LWK:LQJV )O\1R:D\
?Q\P W]Z VM_ LM[QOV \PM ,]KS []JKTI[[M[ _QTT ][M I JMPI^QWZ
IO\ ^
IO\ ^ ZMXZM[MV\ML Ja IV QV\MZNIKM .Ta*MPI^QWZ IVL 9]IKS*MPI^QWZ [W \PI\
LPSOHPHQWV GXFN IO\LQJ GR QRWKLQJ FDQ·W IO\ ` \PM IK\]IT QUXTMUMV\I\QWV WN \PM JMPI^QWZ QV W\PMZ _WZL[ \PM [XMKQÅ K ` KWVKZM\M JMPI^QWZ KWLML QV \PM KTI[[ \PI\ QUXTMUMV\[ \PM .Ta*MPI^QWZ WZ 9]IKS*MPI^QWZ _WV¼\ JM TWKSML QV\W \PM ,]KS []JKTI[[
\RX DUH KHUH
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 12
SURJUDP WR DQ LQWHUIDFH, GRQ·W VHH ZK\ \RX KDYH WR LQWHUIDFH IRU )O\%HKDYLRU
XVH DQ <RX FDQ GR WKH VDPH WKLQJ ZLWK DQ
DEVWUDFW VXSHUFODVV ,VQ·W WKH ZKROH SRLQW WR XVH SRO\PRUSKLVP"
´3URJUDP WR DQ LQWHUIDFHµ UHDOO\ PHDQV
´3URJUDP WR D
VXSHUW\SH µ <PM _WZL QV\MZNIKM Q[ W^MZTWILML PMZM <PMZM¼[ \PM KWVKMX\ WN QV\MZNIKM J]\ \PMZM¼[ IT[W \PM 2I^I KWV[\Z]K\ LQWHUIDFH AW]
KIV XZWOZIU \W IV QV\MZNIKM _Q\PW]\ PI^QVO \W IK\]ITTa ][M I
2I^I <PM XWQV\ Q[ \W M`XTWQ\ XWTaUWZXPQ[U Ja
LQWHUIDFH
XZWOZIUUQVO \W I []XMZ\aXM [W \PI\ \PM IK\]IT Z]V\QUM WJRMK\ Q[V¼\ TWKSML QV\W \PM KWLM )VL _M KW]TL ZMXPZI[M ¹XZWOZIU \W I []XMZ\aXMº I[ ¹\PM LMKTIZML \aXM WN \PM ^IZQIJTM[ [PW]TL JM I []XMZ\aXM ][]ITTa IV IJ[\ZIK\ KTI[[ WZ QV\MZNIKM [W \PI\ \PM WJRMK\[ I[[QOVML \W \PW[M ^IZQIJTM[ KIV JM WN IVa KWVKZM\M QUXTMUMV\I\QWV WN \PM []XMZ\aXM _PQKP UMIV[ \PM KTI[[ LMKTIZQVO \PMU LWM[V¼\ PI^M \W SVW_ IJW]\ \PM IK\]IT WJRMK\ \aXM[ º <PQ[ Q[ XZWJIJTa WTL VM_[ \W aW] J]\ R][\ \W UISM []ZM _M¼ZM
ITT [IaQVO \PM [IUM \PQVO PMZM¼[ I [QUXTM M`IUXTM WN ][QVO I
XWTaUWZXPQK \aXM¸QUIOQVM IV IJ[\ZIK\ KTI[[ )VQUIT _Q\P \_W KWVKZM\M QUXTMUMV\I\QWV[ ,WO IVL +I\
8ZWOZIUUQVO \W IV QUXTMUMV\I\QWV _W]TL JM" DEVWUDFW VXSHUW\SH FRXOG EH DQ DEVWUDFW FODVV 25
'RJ G QHZ 'RJ 'HFODULQJ WKH YDULDEOH ´Gµ DV W\SH 'RJ D FRQFUHWH LPSOHPHQWDWLRQ RI $QLPDO
LQWHUIDFH G EDUN
IRUFHV XV WR FRGH WR D FRQFUHWH LPSOHPHQWDWLRQ $QLPDO
- ]\ XZWOZIUUQVO \W IV QV\MZNIKM []XMZ\aXM _W]TL JM"
PDNH6RXQG :H NQRZ LW·V D 'RJ EXW
$QLPDO DQLPDO QHZ 'RJ ZH FDQ QRZ XVH WKH DQLPDO DQLPDO PDNH6RXQG UHIHUHQFH SRO\PRUSKLFDOO\
- ^MV JM\\MZ ZI\PMZ \PIV PIZL KWLQVO \PM QV[\IV\QI\QWV WN \PM
FRQFUHWH []J\aXM TQSM VM_ ,WO QV\W \PM KWLM I[[QOV \PM KWVKZM\M
LPSOHPHQWDWLRQV QUXTMUMV\I\QWV WJRMK\ I\ Z]V\QUM" 'RJ &DW
:H GRQ·W NQRZ :+$7 WKH DFWXDO
D JHW$QLPDO
PDNH6RXQG ^ PDNH6RXQG ^
DQLPDO VXEW\SH LV DOO ZH FDUH DERXW
EDUN PHRZ DQLPDO PDNH6RXQG
LV WKDW LW NQRZV KRZ WR UHVSRQG WR
` `
PDNH6RXQG
EDUN ^ EDUN VRXQG ` PHRZ ^ PHRZ VRXQG `
&KDSWHU
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
LQWUR WR 'HVLJQ 3DWWHUQV
- HUH ZH KDYH DQ LQWHUIDFH WKDW DOO IO\LQJ FODVVHV LPSOHPHQW $OO QHZ IO\LQJ FODVVHV MXVW QHHG WR LPSOHPHQW WKH IO\ PHWKRG
- HUH·V WKH LPSOHPHQWDWLRQ RI
4XDFN TXDFN ^ UXEEHU GXFNLH VTXHDN `
Chapter 1. Welcome to Design Patterns Page 13
XVH Á \LQJ EHKDYLRUV
$QG ZH FDQ DGG QHZ EHKDYLRUV ZLWKRXW PRGLI\LQJ DQ\ RI RXU H[LVWLQJ EHKDYLRU FODVVHV RU WRXFKLQJ DQ\ RI WKH 'XFN FODVVHV WKDW
:LWK WKLV GHVLJQ RWKHU W\SHV RI REMHFWV FDQ UHXVH RXU Á \ DQG TXDFN EHKDYLRUV EHFDXVH WKHVH EHKDYLRUV DUH QR ORQJHU KLGGHQ DZD\ LQ RXU 'XFN FODVVHV
6R ZH JHW WKH EHQHILW RI 5(86( ZLWKRXW DOO WKH EDJ JDJH WKDW FRPHV DORQJ ZLWK LQKHULWDQFH
0MZM _M PI^M \PM \_W QV\MZNIKM[ .Ta*MPI^QWZ IVL 9]IKS*MPI^QWZ ITWVO _Q\P \PM KWZZM[XWVLQVO KTI[[M[ \PI\ QUXTMUMV\ MIKP KWVKZM\M JMPI^QWZ"
1UXTMUMV\QVO \PM ,]KS *MPI^QWZ[
0XWH4XDFN
6TXHDN TXDFN ^ GR QRWKLQJ FDQ·W TXDFN `
TXDFN ^ LPSOHPHQWV GXFN TXDFNLQJ `
\RX DUH KHUH
4XDFN%HKDYLRU TXDFN
)O\1R:D\ LQWHUIDFH!!
IO\ ^ GR QRWKLQJ FDQ·W IO\ `
)O\:LWK:LQJV
IO\ ^ LPSOHPHQWV GXFN IO\LQJ `
IO\
6DPH WKLQJ KHUH IRU WKH TXDFN EHKDYLRU ZH KDYH DQ LQWHUIDFH WKDW MXVW LQFOXGHV D TXDFN PHWKRG WKDW QHHGV WR EH LPSOH PHQWHG LQWHUIDFH!! )O\%HKDYLRU
4XDFNV WKDW VTXHDN 4XDFNV WKDW PDNH QR VRXQG DW DOO
4XDFNV WKDW UHDOO\ TXDFN
IO\LQJ IRU DOO GXFNV WKDW KDYH ZLQJV $QG KHUH·V WKH LPSOHPHQWDWLRQ RI DOO GXFNV WKDW FDQ·W IO\
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 14
EHKDYLRU LQ D FODVV WKHUH DUH QR'XPE 4XHVWLRQV 'R , DOZD\V KDYH WR LPSOHPHQW P\ DSSOLFDWLRQ ILUVW VHH ,W IHHOV D OLWWOH ZHLUG WR KDYH D FODVV WKDW·V MXVW D
Q: Q:
ZKHUH WKLQJV DUH FKDQJLQJ DQG WKHQ JR EDFN DQG VHSDUDWH EHKDYLRU $UHQ·W FODVVHV VXSSRVHG WR UHSUHVHQW WKLQJV" $UHQ·W HQFDSVXODWH WKRVH WKLQJV" FODVVHV VXSSRVHG WR KDYH ERWK VWDWH $1' EHKDYLRU"
1RW DOZD\V RIWHQ ZKHQ \RX DUH GHVLJQLQJ DQ DSSOLFDWLRQ ,Q DQ 22 V\VWHP \HV FODVVHV UHSUHVHQW WKLQJV WKDW
A:
A:
\RX DQWLFLSDWH WKRVH DUHDV WKDW DUH JRLQJ WR YDU\ DQG WKHQ JR DKHDG JHQHUDOO\ KDYH ERWK VWDWH LQVWDQFH YDULDEOHV DQG PHWKRGV $QG LQ DQG EXLOG WKH IOH[LELOLW\ WR GHDO ZLWK LW LQWR \RXU FRGH <RX·OO ILQG WKLV FDVH WKH WKLQJ KDSSHQV WR EH D EHKDYLRU %XW HYHQ D EHKDYLRU WKDW WKH SULQFLSOHV DQG SDWWHUQV FDQ EH DSSOLHG DW DQ\ VWDJH RI WKH FDQ VWLOO KDYH VWDWH DQG PHWKRGV D IO\LQJ EHKDYLRU PLJKW KDYH GHYHORSPHQW OLIHF\FOH LQVWDQFH YDULDEOHV UHSUHVHQWLQJ WKH DWWULEXWHV IRU WKH IO\LQJ ZLQJ
EHDWV SHU PLQXWH PD[ DOWLWXGH DQG VSHHG HWF EHKDYLRU
6KRXOG ZH PDNH 'XFN DQ LQWHUIDFH WRR" Q:
1RW LQ WKLV FDVH $V \RX·OO VHH RQFH ZH·YH JRW HYHU\WKLQJ
A:
KRRNHG WRJHWKHU ZH GR EHQHILW E\ KDYLQJ 'XFN EH D FRQFUHWH FODVV DQG KDYLQJ VSHFLILF GXFNV OLNH 0DOODUG'XFN LQKHULW FRPPRQ SURSHUWLHV DQG PHWKRGV 1RZ WKDW ZH·YH UHPRYHG ZKDW YDULHV IURP WKH 'XFN LQKHULWDQFH ZH JHW WKH EHQHILWV RI WKLV VWUXFWXUH ZLWKRXW WKH SUREOHPV
6KDUSHQ \RXU SHQFLO
8VLQJ RXU QHZ GHVLJQ ZKDW ZRXOG \RX GR LI \RX QHHGHG WR DGG URFNHW SRZHUHG À\LQJ WR WKH 6LP8'XFN DSS"
\ UISM[ L]KS [W]VL[ LM^QKM \PI
&DQ \RX WKLQN RI D FODVV WKDW PLJKW ZDQW WR XVH WKH 4XDFN
I L]KS KITT I
7VM M`IUXTM
EHKDYLRU WKDW LVQ¶W D GXFN"
QV\MZNIKM Ta*MPI^QWZ \PI\ QUXTMUMV\[ \PM . MZML KTI[[ WKSM\8W_ \M I .Ta: +ZMI [" )V[_MZ
&KDSWHU
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 15
LQWUR WR 'HVLJQ 3DWWHUQV1V\MOZI\QVO \PM ,]KS *MPI^QWZ
7KH NH\ LV WKDW D 'XFN ZLOO QRZ GHOHJDWH LWV Á \LQJ DQG TXDFNLQJ EHKDYLRU LQVWHDG RI XVLQJ TXDFNLQJ DQG Á \LQJ PHWKRGV GHÀ QHG LQ WKH 'XFN FODVV RU VXEFODVV
- HUH·V KRZ
.QZ[\ _M¼TT ILL \_W QV[\IVKM ^IZQIJTM[ \W \PM ,]KS KTI[[ KITTML Æ a*MPI^QWZ IVL Y]IKS*MPI^QWZ \PI\ IZM LMKTIZML I[ \PM QV\MZNIKM \aXM VW\ I KWVKZM\M KTI[[ QUXTMUMV\I\QWV \aXM -IKP L]KS WJRMK\ _QTT [M\ \PM[M ^IZQIJTM[ XWTaUWZXPQKITTa \W ZMNMZMVKM \PM [XMKQÅ K JMPI^QWZ \aXM Q\ _W]TL TQSM I\ Z]V\QUM .Ta?Q\P?QVO[ ;Y]MIS M\K ?M¼TT IT[W ZMUW^M \PM Æ a IVL Y]IKS UM\PWL[ NZWU \PM ,]KS KTI[[ IVL IVa []JKTI[[M[
JMKI][M _M¼^M UW^ML \PQ[ JMPI^QWZ W]\ QV\W \PM .Ta*MPI^QWZ IVL 9]IKS*MPI^QWZ KTI[[M[
?M¼TT ZMXTIKM Æ a IVL Y]IKS QV \PM ,]KS KTI[[ _Q\P \_W [QUQTIZ UM\PWL[ KITTMLXMZNWZU.Ta IVL XMZNWZU9]IKS # aW]¼TT [MM PW_ \PMa _WZS VM`\ ,QVWDQFH YDULDEOHV KROG D UHIHUHQFH WR
7KH EHKDYLRU YDULDEOHV DUH D VSHFLILF EHKDYLRU DW UXQWLPH GHFODUHG DV WKH EHKDYLRU 'XFN
,17(5)$&( W\SH )O\%HKDYLRU IO\%HKDYLRU
4XDFN%HKDYLRU TXDFN%HKDYLRU
V SHUIRUP4XDFN )O\LQJ %HKDYLRU
7KHVH PHWKRGV UHSODFH
VZLP UV
IO\ DQG TXDFN
4XDFNLQJ %HKDYLR GLVSOD\ SHUIRUP)O\ 'XFN %HKDYLRUV 27+(5 GXFN OLNH PHWKRGV
6W_ _M QUXTMUMV\ XMZNWZU9]IKS " SXEOLF FODVV 'XFN ^
(DFK 'XFN KDV D UHIHUHQFH WR VRPHWKLQJ WKDW
4XDFN%HKDYLRU TXDFN%HKDYLRU LPSOHPHQWV WKH 4XDFN%HKDYLRU LQWHUIDFH
PRUH
5DWKHU WKDQ KDQGOLQJ WKH TXDFN EHKDYLRU SXEOLF YRLG SHUIRUP4XDFN ^
LWVHOI WKH 'XFN REMHFW GHOHJDWHV WKDW TXDFN%HKDYLRU TXDFN
EHKDYLRU WR WKH REMHFW UHIHUHQFHG E\ `
TXDFN%HKDYLRU `
8ZM\\a [QUXTM P]P' <W XMZNWZU \PM Y]IKS I ,]KS R][\ ITTW_[ \PM WJRMK\ \PI\ Q[ ZMNMZMVKML Ja Y]IKS*MPI^QWZ \W Y]IKS NWZ Q\
1V \PQ[ XIZ\ WN \PM KWLM _M LWV¼\ KIZM _PI\ SQVL WN WJRMK\ Q\ Q[ ITT _M KIZM
IJW]\ Q[ \PI\ Q\ SVW_[ PW_ \W Y]IKS \RX DUH KHUH
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 16
LQWHJUDWLQJ GXFN EHKDYLRU
5WZM 1V\MOZI\QWV
7SIa \QUM \W _WZZa IJW]\ PW_ \PM Æa*MPI^QWZ IVL Y]IKS*MPI^QWZ QV[\IVKM ^IZQIJTM[ IZM [M\ 4M\¼[ \ISM I TWWS I\ \PM 5ITTIZL,]KS KTI[["
SXEOLF FODVV 0DOODUG'XFN H[WHQGV 'XFN ^
$ 0DOODUG'XFN XVHV WKH 4XDFN FODVV WR
SXEOLF 0DOODUG'XFN ^
KDQGOH LWV TXDFN VR ZKHQ SHUIRUP4XDFN
TXDFN%HKDYLRU QHZ 4XDFN
LV FDOOHG WKH UHVSRQVLELOLW\ IRU WKH
À\%HKDYLRU QHZ )O\:LWK:LQJV
TXDFN LV GHOHJDWHG WR WKH 4XDFN REMHFW
`
DQG ZH JHW D UHDO TXDFN
5HPHPEHU 0DOODUG'XFN LQKHULWV WKH TXDFN $QG LW XVHV )O\:LWK:LQJV DV LWV
%HKDYLRU DQG IO\%HKDYLRU LQVWDQFH YDULDEOHV )O\%HKDYLRU W\SH
IURP FODVV 'XFN
SXEOLF YRLG GLVSOD\ ^ 6\VWHP RXW SULQWOQ ³,¶P D UHDO 0DOODUG GXFN´
` `
;W 5ITTIZL,]KS¼[ Y]IKS Q[ I ZMIT TQ^M L]KS Y]IKS VW\ I [Y]MIS IVL
VW\ I U]\M Y]IKS ;W _PI\ PIXXMV[ PMZM' ?PMV I 5ITTIZL,]KS Q[ QV[\IV\QI\ML Q\[ KWV[\Z]K\WZ QVQ\QITQbM[ \PM 5ITTIZL,]KS¼[ QVPMZQ\ML Y]IKS*MPI^QWZ QV[\IVKM ^IZQIJTM \W I VM_ QV[\IVKM WN \aXM 9]IKS I 9]IKS*MPI^QWZ KWVKZM\M QUXTMUMV\I\QWV KTI[[ )VL \PM [IUM Q[ \Z]M NWZ \PM L]KS¼[ ÆaQVO JMPI^QWZ¸\PM 5ITTIZL,]KS¼[ KWV[\Z]K\WZ QVQ\QITQbM[ \PM Æa*MPI^QWZ QV[\IVKM ^IZQIJTM _Q\P IV QV[\IVKM WN \aXM .Ta?Q\P?QVO[ I .Ta*MPI^QWZ KWVKZM\M QUXTMUMV\I\QWV KTI[[
&KDSWHU
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 17
LQWUR WR 'HVLJQ 3DWWHUQV
:DLW D VHFRQG GLGQ·W \RX
VD\ ZH VKRXOG 127 SURJUDP WR DQ
LPSOHPHQWDWLRQ" %XW ZKDW DUH ZH GRLQJ LQ WKDW FRQVWUXFWRU" :H·UH PDNLQJ D
QHZ LQVWDQFH RI D FRQFUHWH 4XDFN LPSOHPHQWDWLRQ FODVV
/WWL KI\KP \PI\¼[ M`IK\Ta _PI\ _M¼ZM LWQVO
NWZ VW_
4I\MZ QV \PM JWWS _M¼TT PI^M UWZM XI\\MZV[ QV W]Z \WWTJW` \PI\ KIV PMTX ][ Å` Q\ ;\QTT VW\QKM \PI\ _PQTM _M IZM [M\\QVO \PM JMPI^QWZ[ \W KWVKZM\M KTI[[M[ Ja QV[\IV\QI\QVO
I JMPI^QWZ KTI[[ TQSM 9]IKS WZ .Ta?Q\P?QVO[
IVL I[[QOVQVO Q\ \W W]Z JMPI^QWZ ZMNMZMVKM ^IZQIJTM _M KW]TL MI[QTa KPIVOM \PI\ I\ Z]V\QUM ;W _M [\QTT PI^M I TW\ WN ÆM`QJQTQ\a PMZM J]\ _M¼ZM LWQVO I XWWZ RWJ WN QVQ\QITQbQVO \PM QV[\IVKM ^IZQIJTM[ QV I ÆM`QJTM _Ia *]\ \PQVS IJW]\ Q\ [QVKM \PM Y]IKS*MPI^QWZ QV[\IVKM ^IZQIJTM Q[ IV QV\MZNIKM \aXM _M KW]TL \PZW]OP \PM UIOQK WN XWTaUWZXPQ[U
LaVIUQKITTa I[[QOV I LQNNMZMV\ 9]IKS*MPI^QWZ
QUXTMUMV\I\QWV KTI[[ I\ Z]V\QUM <ISM I UWUMV\ IVL \PQVS IJW]\ PW_ aW] _W]TL QUXTMUMV\ I L]KS [W \PI\ Q\[ JMPI^QWZ KW]TL KPIVOM I\ Z]V\QUM AW]¼TT [MM \PM KWLM \PI\ LWM[ \PQ[ I NM_ XIOM[ NZWU VW_\RX DUH KHUH
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 18
WHVWLQJ GXFN EHKDYLRUV
<M[\QVO \PM ,]KS KWLM 7\SH DQG FRPSLOH WKH 'XFN FODVV EHORZ 'XFN MDYD DQG WKH
0DOODUG'XFN FODVV IURP WZR SDJHV EDFN 0DOODUG'XFN MDYD
SXEOLF DEVWUDFW FODVV 'XFN ^
'HFODUH WZR UHIHUHQFH YDULDEOHV
)O\%HKDYLRU À\%HKDYLRU
IRU WKH EHKDYLRU LQWHUIDFH W\SHV
4XDFN%HKDYLRU TXDFN%HKDYLRU
$OO GXFN VXEFODVVHV LQ WKH VDPH
SXEOLF 'XFN ^ ` SDFNDJH LQKHULW WKHVH SXEOLF DEVWUDFW YRLG GLVSOD\ SXEOLF YRLG SHUIRUP)O\ ^ À\%HKDYLRU À\
'HOHJDWH WR WKH EHKDYLRU FODVV
` SXEOLF YRLG SHUIRUP4XDFN ^ TXDFN%HKDYLRU TXDFN ` SXEOLF YRLG VZLP ^ 6\VWHP RXW SULQWOQ ³$OO GXFNV ÀRDW HYHQ GHFR\V ´ ` `
7\SH DQG FRPSLOH WKH )O\%HKDYLRU LQWHUIDFH )O\%HKDYLRU MDYD DQG WKH WZR EHKDYLRU LPSOHPHQWDWLRQ FODVVHV )O\:LWK:LQJV MDYD DQG )O\1R:D\ MDYD
7KH LQWHUIDFH WKDW DOO IO\LQJ
SXEOLF LQWHUIDFH )O\%HKDYLRU ^
EHKDYLRU FODVVHV LPSOHPHQW
SXEOLF YRLG À\ `
SXEOLF FODVV )O\:LWK:LQJV LPSOHPHQWV )O\%HKDYLRU ^ SXEOLF YRLG À\ ^
)O\LQJ EHKDYLRU LPSOHPHQWDWLRQ
6\VWHP RXW SULQWOQ ³,¶P À\LQJ ´ `
IRU GXFNV WKDW '2 IO\
` SXEOLF FODVV )O\1R:D\ LPSOHPHQWV )O\%HKDYLRU ^
)O\LQJ EHKDYLRU LPSOHPHQWDWLRQ
SXEOLF YRLG À\ ^
IRU GXFNV WKDW GR 127 IO\ OLNH
6\VWHP RXW SULQWOQ ³, FDQ¶W À\´ ` UXEEHU GXFNV DQG GHFR\ GXFNV
`
&KDSWHU
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 19
LQWUR WR 'HVLJQ 3DWWHUQV
<M[\QVO \PM ,]KS KWLM KWV\QV]ML 7\SH DQG FRPSLOH WKH 4XDFN%HKDYLRU LQWHUIDFH
4XDFN%HKDYLRU MDYD DQG WKH WKUHH EHKDYLRU LPSOHPHQWDWLRQ FODVVHV 4XDFN MDYD 0XWH4XDFN MDYD DQG 6THDN MDYD
SXEOLF LQWHUIDFH 4XDFN%HKDYLRU ^ SXEOLF YRLG TXDFN
` SXEOLF FODVV 4XDFN LPSOHPHQWV 4XDFN%HKDYLRU ^ SXEOLF YRLG TXDFN ^ 6\VWHP RXW SULQWOQ ³4XDFN´ `
` SXEOLF FODVV 0XWH4XDFN LPSOHPHQWV 4XDFN%HKDYLRU ^ SXEOLF YRLG TXDFN ^
6\VWHP RXW SULQWOQ ³ 6LOHQFH !!´ `
` SXEOLF FODVV 6TXHDN LPSOHPHQWV 4XDFN%HKDYLRU ^ SXEOLF YRLG TXDFN ^
6\VWHP RXW SULQWOQ ³6TXHDN´ `
`
7\SH DQG FRPSLOH WKH WHVW FODVV
0LQL'XFN6LPXODWRU MDYD
SXEOLF FODVV 0LQL'XFN6LPXODWRU ^ SXEOLF VWDWLF YRLG PDLQ 6WULQJ>@ DUJV ^ 'XFN PDOODUG QHZ 0DOODUG'XFN
7KLV FDOOV WKH 0DOODUG'XFN·V LQKHULWHG
PDOODUG SHUIRUP4XDFN PDOODUG SHUIRUP)O\ SHUIRUP4XDFN PHWKRG ZKLFK WKHQ GHOHJDWHV WR `
WKH REMHFW·V 4XDFN%HKDYLRU L H FDOOV TXDFN RQ WKH
`
GXFN·V LQKHULWHG TXDFN%HKDYLRU UHIHUHQFH
5XQ WKH FRGH
7KHQ ZH GR WKH VDPH WKLQJ ZLWK 0DOODUG'XFN·V LQKHULWHG SHUIRUP)O\ PHWKRG )LOH (GLW :LQGRZ +HOS <DGD\DGD\DGD
MDYD 0LQL'XFN6LPXODWRU
4XDFN ,¶P À\LQJ \RX DUH KHUH
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 20
GXFNV ZLWK G\QDPLF EHKDYLRU
;M\\QVO JMPI^QWZ LaVIUQKITTa ?PI\ I [PIUM \W PI^M ITT \PQ[ LaVIUQK \ITMV\ J]QT\ QV\W W]Z L]KS[ IVL VW\ JM ][QVO Q\ 1UIOQVM aW] _IV\ \W [M\ \PM L]KS¼[ JMPI^QWZ \aXM \PZW]OP I [M\\MZ UM\PWL WV \PM L]KS []JKTI[[ ZI\PMZ \PIV Ja QV[\IV\QI\QVO Q\ QV \PM L]KS¼[ KWV[\Z]K\WZ $GG WZR QHZ PHWKRGV WR WKH 'XFN FODVV
SXEOLF YRLG VHW)O\%HKDYLRU )O\%HKDYLRU IE ^ À \%HKDYLRU IE
'XFN
`
)O\%HKDYLRU IO\%HKDYLRU
4XDFN%HKDYLRU TXDFN%HKDYLRU
SXEOLF YRLG VHW4XDFN%HKDYLRU 4XDFN%HKDYLRU TE ^ TXDFN%HKDYLRU TE
VZLP
`
GLVSOD\ SHUIRUP4XDFN SHUIRUP)O\
VHW)O\%HKDYLRU
?M KIV KITT \PM[M UM\PWL[ IVa\QUM _M _IV\ \W KPIVOM \PM 27+(5 GXFN OLNH PHWKRGV
JMPI^QWZ WN I L]KS WV \PM Æ a HGLWRU QRWH JUDWXLWRXV SXQ ¿ [
0DNH D QHZ 'XFN W\SH 0RGHO'XFN MDYD
SXEOLF FODVV 0RGHO'XFN H[WHQGV 'XFN ^ SXEOLF 0RGHO'XFN ^
2XU PRGHO GXFN EHJLQV OLIH JURXQGHG
À \%HKDYLRU QHZ )O\1R:D\
ZLWKRXW D ZD\ WR IO\
TXDFN%HKDYLRU QHZ 4XDFN ` SXEOLF YRLG GLVSOD\ ^ 6\VWHP RXW SULQWOQ ³,¶P D PRGHO GXFN´ ` `
0DNH D QHZ )O\%HKDYLRU W\SH
7KDW·V RND\ ZH·UH FUHDWLQJ D URFNHW SRZHUHG IO\LQJ EHKDYLRU )O\5RFNHW3RZHUHG MDYD
SXEOLF FODVV )O\5RFNHW3RZHUHG LPSOHPHQWV )O\%HKDYLRU ^ SXEOLF YRLG À \ ^ 6\VWHP RXW SULQWOQ ³,¶P À \LQJ ZLWK D URFNHW ´ `
`
&KDSWHU
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 21
LQWUR WR 'HVLJQ 3DWWHUQV
&KDQJH WKH WHVW FODVV 0LQL'XFN6LPXODWRU MDYD DGG WKH
0RGHO'XFN DQG PDNH WKH 0RGHO'XFN URFNHW HQDEOHG EHIRUH
SXEOLF FODVV 0LQL'XFN6LPXODWRU ^ SXEOLF VWDWLF YRLG PDLQ 6WULQJ>@ DUJV ^ 'XFN PDOODUG QHZ 0DOODUG'XFN PDOODUG SHUIRUP4XDFN PDOODUG SHUIRUP)O\
7KH ILUVW FDOO WR SHUIRUP)O\ GHOHJDWHV
'XFN PRGHO QHZ 0RGHO'XFN
WR WKH IO\%HKDYLRU REMHFW VHW LQ WKH
0RGHO'XFN·V FRQVWUXFWRU ZKLFK LV D
PRGHO SHUIRUP)O\
)O\1R:D\ LQVWDQFH
PRGHO VHW)O\%HKDYLRU QHZ )O\5RFNHW3RZHUHG
7KLV LQYRNHV WKH PRGHO·V LQKHULWHG
PRGHO SHUIRUP)O\ EHKDYLRU VHWWHU PHWKRG DQG YRLOD 7KH
PRGHO VXGGHQO\ KDV URFNHW SRZHUHG
`
IO\LQJ FDSDELOLW\
`
,I LW ZRUNHG WKH PRGHO GXFN G\QDPLFDOO\ FKDQJHG LWV IO\LQJ EHKDYLRU <RX FDQ·W GR 7+$7 LI WKH LPSOHPHQWDWLRQ OLYHV LQVLGH WKH GXFN FODVV
5XQ LW )LOH (GLW :LQGRZ +HOS <DEDGDEDGRR
MDYD 0LQL'XFN6LPXODWRU
4XDFN ,¶P À\LQJ DIWHU
, FDQ¶W À\ ,¶P À\LQJ ZLWK D URFNHW
7R FKDQJH D GXFN·V EHKDYLRU DW UXQWLPH MXVW FDOO WKH GXFN·V VHWWHU PHWKRG IRU WKDW EHKDYLRU
\RX DUH KHUH
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 22
WKH ELJ SLFWXUH
<PM *QO 8QK\]ZM WV MVKIX[]TI\ML JMPI^QWZ[
2ND\ QRZ WKDW ZH·YH GRQH WKH GHHS GLYH RQ WKH GXFN VLPXODWRU GHVLJQ LW·V WLPH WR FRPH EDFN XS
IRU DLU DQG WDNH D ORRN DW WKH ELJ SLFWXUH
- MTW_ Q[ \PM MV\QZM ZM_WZSML KTI[[ [\Z]K\]ZM ?M PI^M M^MZa\PQVO aW]¼L M`XMK\" L]KS[ M`\MVLQVO ,]KS Æ a JMPI^QWZ[ QUXTMUMV\QVO .Ta*MPI^QWZ IVL Y]IKS JMPI^QWZ[ QUXTMUMV\QVO 9]IKS*MPI^QWZ
6W\QKM IT[W \PI\ _M¼^M [\IZ\ML \W LM[KZQJM \PQVO[ I TQ\\TM LQNNMZMV\Ta 1V[\MIL WN \PQVSQVO WN \PM L]KS JMPI^QWZ[ I[ I [M\ WN JMPI^QWZ[ _M¼TT [\IZ\ \PQVSQVO WN \PMU I[ I NIUQTa WN ITOWZQ\PU[ <PQVS IJW]\ Q\" QV \PM ;QU=,]KS LM[QOV \PM
ITOWZQ\PU[ ZMXZM[MV\ \PQVO[ I L]KS _W]TL LW LQNNMZMV\ _Ia[ WN Y]IKSQVO WZ Æ aQVO J]\ _M KW]TL R][\ I[ MI[QTa ][M \PM [IUM \MKPVQY]M[ NWZ I [M\ WN KTI[[M[ \PI\ QUXTMUMV\ \PM _Ia[ \W KWUX]\M [\I\M [ITM[ \I` Ja LQNNMZMV\ [\I\M[
8Ia KIZMN]T I\\MV\QWV \W \PM ZMTI\QWV[PQX[ JM\_MMV \PM KTI[[M[ 1V NIK\ OZIJ aW]Z XMV IVL _ZQ\M \PM IXXZWXZQI\M ZMTI\QWV[PQX 1; ) 0); ) IVL 1584-5-6<; WV MIKP IZZW_ QV \PM KTI[[ LQIOZIU
(QFDSVXODWHG À \ EHKDYLRU &OLHQW PDNHV XVH RI DQ )O\%HKDYLRU LQWHUIDFH!! HQFDSVXODWHG IDPLO\ RI DOJRULWKPV IO\
IRU ERWK IO\LQJ DQG TXDFNLQJ
7KLQN RI HDFK &OLHQW 'XFN )O\%HKDYLRU IO\%HKDYLRU )O\1R:D\ )O\:LWK:LQJV
VHW RI EHKDYLRUV
VHW)O\%HKDYLRU SHUIRUP4XDFN 4XDFN%HKDYLRU TXDFN%HKDYLRU VZLP GLVSOD\ SHUIRUP)O\ ` LPSOHPHQWV GXFN IO\LQJ GR QRWKLQJ FDQ·W IO\ DOJRULWKPV IO\ ^ ` IO\ ^ DV D IDPLO\ RI GLVSOD\ ^ GLVSOD\ ^ GLVSOD\ ^ GLVSOD\ ^ 0DOODUG'XFN 5HGKHDG'XFN 27+(5 GXFN OLNH PHWKRGV VHW4XDFN%HKDYLRU 5XEEHU'XFN 'HFR\'XFN 4XDFN (QFDSVXODWHG TXDFN EHKDYLRU TXDFN 4XDFN%HKDYLRU LQWHUIDFH!! 6TXHDN 0XWH4XDFN ORRNV OLNH D PDOODUG ` ORRNV OLNH D UHGKHDG ` ORRNV OLNH D UXEEHUGXFN ` ORRNV OLNH D GHFR\ GXFN ` ` ` ` LPSOHPHQWV GXFN TXDFNLQJ UXEEHU GXFNLH VTXHDN GR QRWKLQJ FDQ·W TXDFN TXDFN ^ TXDFN ^ TXDFN ^
7KHVH EHKDYLRUV ´DOJRULWKPVµ DUH LQWHUFKDQJHDEOH
&KDSWHU
Chapter 1. Welcome to Design Patterns Head First Design Patterns By Eric Freeman, Elisabeth Freeman, Bert Bates, Kathy Sierra Prepared for Ann Cherkis, Safari ID: maottw@gmail.com
Chapter 1. Welcome to Design Patterns Page 23
LQWUR WR 'HVLJQ 3DWWHUQV0); ) KIV JM JM\\MZ \PIV 1; ) <PM 0); ) ZMTI\QWV[PQX Q[ IV QV\MZM[\QVO WVM" MIKP L]KS PI[ I .Ta*MPI^QWZ IVL I 9]IKS*MPI^QWZ \W _PQKP Q\
LMTMOI\M[ ÆaQVO IVL Y]IKSQVO ?PMV aW] X]\ \_W KTI[[M[ \WOM\PMZ TQSM \PQ[ aW]¼ZM ][QVO KWUXW[Q\QWV 1V[\MIL WN QVPMZQ\QVO \PMQZ JMPI^QWZ \PM
0DVWHU DQG 6WXGHQW L]KS[ OM\ \PMQZ JMPI^QWZ Ja JMQVO KWUXW[ML _Q\P \PM ZQOP\
0DVWHU *UDVVKRSSHU JMPI^QWZ WJRMK\
WHOO PH ZKDW \RX KDYH OHDUQHG RI WKH 2EMHFW <PQ[ Q[ IV QUXWZ\IV\ \MKPVQY]M# QV NIK\ _M¼^M JMMV ][QVO
2ULHQWHG ZD\V W]Z \PQZL LM[QOV XZQVKQXTM"
6WXGHQW 0DVWHU , KDYH OHDUQHG WKDW WKH SURPLVH RI WKH REMHFW RULHQWHG ZD\ LV UHXVH
0DVWHU *UDVVKRSSHU FRQWLQXH 'HVLJQ 3ULQFLSOH
)DYRU FRPSRVLWLRQ RYHU LQKHULWDQFH
6WXGHQW 0DVWHU WKURXJK LQKHULWDQFH DOO JRRG WKLQJV PD\ EH UHXVHG DQG
VR ZH ZLOO FRPH WR GUDVWLFDOO\ FXW GHYHORSPHQW WLPH OLNH ZH VZLIWO\ FXW EDPERR LQ WKH ZRRGV
)[ aW]¼^M [MMV KZMI\QVO [a[\MU[ ][QVO KWUXW[Q\QWV OQ^M[ aW]
0DVWHU *UDVVKRSSHU LV PRUH
I TW\ UWZM ÆM`QJQTQ\a 6W\ WVTa LWM[ Q\ TM\ aW] MVKIX[]TI\M WLPH VSHQW RQ FRGH EHIRUH RU DIWHU