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.com

  WKLV 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 Patterns

  1RZ 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 3DWWHUQV

  BMZWQVO 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 %HKDYLRUV

  4XDFNLQJ %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 3DWWHUQV

  1V\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[ KITTML

  XMZNWZU.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 3DWWHUQV

  0); ) 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