From bf547ae8bede61f160e2015cfa38662350e2e6a8 Mon Sep 17 00:00:00 2001 From: FengJungle Date: Tue, 29 Oct 2019 22:14:19 +0800 Subject: [PATCH] add Chain-of-Responsibility Pattern --- 13.ProxyPattern/1.Picture/代理模式UML图.png | Bin 0 -> 10713 bytes .../1.Picture/代理模式实例UML图.png | Bin 0 -> 14695 bytes 13.ProxyPattern/2.Code/ProxyPattern.h | 64 +++++++++ 13.ProxyPattern/2.Code/main.cpp | 14 ++ .../1.Picture/职责链模式UML图.png | Bin 0 -> 11198 bytes .../1.Picture/职责链模式UML实例图.png | Bin 0 -> 25213 bytes .../1.Picture/职责链模式举例图.png | Bin 0 -> 429935 bytes .../2.Code/ChainOfResponsibility.h | 135 ++++++++++++++++++ 14.ChainOfResponsibility/2.Code/main.cpp | 33 +++++ README.md | 14 +- 10 files changed, 258 insertions(+), 2 deletions(-) create mode 100644 13.ProxyPattern/1.Picture/代理模式UML图.png create mode 100644 13.ProxyPattern/1.Picture/代理模式实例UML图.png create mode 100644 13.ProxyPattern/2.Code/ProxyPattern.h create mode 100644 13.ProxyPattern/2.Code/main.cpp create mode 100644 14.ChainOfResponsibility/1.Picture/职责链模式UML图.png create mode 100644 14.ChainOfResponsibility/1.Picture/职责链模式UML实例图.png create mode 100644 14.ChainOfResponsibility/1.Picture/职责链模式举例图.png create mode 100644 14.ChainOfResponsibility/2.Code/ChainOfResponsibility.h create mode 100644 14.ChainOfResponsibility/2.Code/main.cpp diff --git a/13.ProxyPattern/1.Picture/代理模式UML图.png b/13.ProxyPattern/1.Picture/代理模式UML图.png new file mode 100644 index 0000000000000000000000000000000000000000..de7ec52382ddbb5d5e02c3401a04313f1099121d GIT binary patch literal 10713 zcmeHtcTiMK*XMu&0)yl*1OY)LsK7IXA?KtZK{5yudSXEU-ie)6joe_c%gyKi zcwf+Y)-V{4lbWKOu9w+bs#G4!mtUa|RaL7@SGg#{hFWG&dwe_mTuM~NEFBNN-9;zeWf=(ae7rx0 zEw6?acYN=%r@s8=y?ELqf$U9vJ@I)v%SX!ZRF+|*n9beP#zDNSlZk>Zh~U7S`uh?xN;UQZmIo9F0MS-6Fx)+wP=yXHGal- zZsQ978J0@KO4!6B>lHd!_YwY|CPM6tWV--GI=-_q+ynpr=gsIDxOR%YrgpXv1XYsndc{B){f-;?Q^wFRg2B_ zzvF@rqL=vL>T&hG%?M5YTaVqX1;dmP1NUG!hAzalf8xmQi|*V{D*M=G+{- ziQ)+H8E-@krC%>PQ}UhYLOk*L@KGe^`u9P2BB?Iu*MWFASn@r4Hk2J1e^e!wvXwo^ z{+OUm=oYyaXl0Ap;ruR^jZC!YyjPT>>tEO1R|fz6qT@3!L;GDklocanNLKB%BSC+6 zp&8>*0<*CmVLlbR2ptakl)ov$mLZUZ@D-2P1+z$xnBgO*)ak78&Hgl69?`(=5slUi z!G~e8fD0$|HS&{Gx50#bI9nt!X1m$Ws;t8PKwsITSIhtNyHB<^29+sp)39FyN@B2g zV1nE~XO^_=pTUoPziHZ8=biDE`CygDlGS7}3{6+-|7k#2iDf%}Bslt{)tu(zxLU(4 z!(4D*zlR0Un*07y3QxpUrc{sAs)MeRS<07^JTSrJE6Tag#Q{QXqK;O3%h^A1g2&Kyfm<^!aIvyZscn zX#}I-MP;Xl0Z2kO<&~)6ZL6UuGTOZF8k(A2i`%s1oB4v-MC!ZqsjOps+)6PEiPfx^ z6HE$cdod&p2xNqqSV1b*qDNkLg>^rjW4~_8Rl8+O#HKeUKdR06j+k_Dnt<^Iby9V% z#ecAv&odBkHZ*tj6<@6f=(wdO9vZyH289OO&G3NYM<2+C^QizL8oe^4;q6t9m zQ=mWIA#!PR9B#ivfDcv$K970Lm*=l%ZNp(5iq8Z{EH9A(KpSVkakK%*r*0v2@p~WY zJcqnltY8GqMTGDpFAQp-U;`$oLKcAqt8ushU(}1h zqZuuNVarT74tS>F2aHzi_yp5%6vs1xoJ)1*?D-}kasUE4?jX1GhGy?q7Hrbz2wcAS zfAI4~*Eav($5UNhU8$V|lpAqj7k~1~dVSII{I_^)uaH+Hy)tT~B_$X%uPa&mU#r7)24WV*i7O3Mf#tdCdU3(8gi&5L+asXUVtG^fDw&9@@V{El|uhTlQ;@3Vt?D_hsbu0H&zxj8EW3$bA_ z>CA={{`!;cL~}nxO+PWeY!5=__*?H+b{qr@o(e(TLG8x7as?B9;kvOk^V6Tmn>~$< zjpb0Uy1wW7_|FAui{z5JquYr)2K7gJQ65p6+|F;cR?be3n?iq0ua96|*2XGA$yxon zNC{kZr-uy8SzLFNHVJ=b!is)jm_(h%t3CO@h<~|GbGV=VQu-NEa+mkJMgu}fi4uTg z>gi5ovh7c&OHyKDfk?#n=*hA{Pfzzo2>EFqIW9X*V@jjLJ#qn4=a4}dhZ{{EEk!$G**n8zvuRh_ znQ)EM>JPByHrpyHX+YD3V|o-vvFaP4asW*DDiM~;%D=5pPQ#`Qyq7vrIXLRv3I*)$ z;#odea1LpvxW3{Az(0-g%8HKhIyd%V_;+I)5tH~=6xab$r!lX#Lf2&f(?dC9^Gl)m zAIzd#EN+qj%m#8#3n8$SN>&*Z#pgZXBZA6jlwdd%L0I5x%|*<7mUy#88AhOnn~G!< zaB_1YBuh_-e+9g|ERA!rqd3G#V^2d1SbatX8OjF+g9%~rTN=7&Fu}=irPN{=77tQ? zd8Jrg9~g8t5|joZ#Q8md`;g&$9#-l#uSBT9Q!Y$UzzxL_yAaIu{m(qc!esw5J@(R{ zYVHW2WzM!*uk@LJ5i2}Zh+{wJ-X7*&b4gcTO_7eH2Z;#uAp8geKxEFD-K5^X2@0WSjv)5z(`^aE^I{o(vGbFeB-xJx6Oi7%8U=DFLsDXcsmySE;V`3GAF-ac0(M`uHhmKcDkEf4mLAzp-*Fyg zpH28pxjl-1eY?(Z>1hRGPr>SQ&Z)Ofj=nCdt^<=}(#_#i5D037jON1hw zl?SjE@@(V(tTAh=UXcf2w3)?_k=2utMSgxE%#<`wra)AS?Qdc5)po1OZbTHxJWA@L z7{G>B6GIJ%=IrNj+@*>5&LQSFTgMJZb;;EQ%;XxDQKXZA9+{2@tq$>CG=&37{3d4l zIiUZ|FNpn!usTs|GU9zIH7QN)f0R-ilIOWM_>9u@J{8`g=cOLjn6=dokHg2c2O+75 zMI(4j{;0fkuA}g=?mfzs`n-MTVbZIuetp@N{<+^i^{3zdZRW)NkTq|WPO9$-SXc%I zUQUHTU!ZPN*S4gw*L!mG<0InAKH+xf;IJH@bE5!z<%U>x(!{jbeYs>^MrF{z5vlqn z4goNr*ofF$<3vhV--E=hLJ%zyx8i`#oe3lH2+m_1(41z^gam{wFouVSeVM7?0Oi1o ze+aGDS+=xG{j{->*QT%cO!IDkY0!ifVjuH67S0|QDF2>AB9w1u+z z9g6*N0jwv}M2U%sf9q>R~U z(rYgA_+aD9@KR2Eu9>L!$>A1@8TYGq_=}5+17rKL{ssl{z2g2WMV~HTzWmgtH8C@?6QtbKA&-YZS|z^tZYu{XV-gR>$k!&ae& z;nK7w0D1bbp*-FUiEUHg2X@m4w)Fx#xDrFM$k%$g&H(Lm`SJN!61CYd`1bvZB}qx5 z7M<)v`Oo0BmX?#MdieFVU_7sQCM#|>eY_`(L2sykTRhOTS_&uo{jecR9c;JPdr>3Y z(+%$b$oDR*D>?WTcn@}I|a8XxW_+^zY^KTh$lMl4^c-SV?H)QbaXL!ti1M&eu9 zGWyeSOBjJxLlJ(&b&wtI1u`yMM^2rtdmf#l{f|wqjLz#HMO=@=Ey%`dO8-)!RBS8}YY;Zpd?ovUud}`cG@Au5?2N(2N8yG4 z4Qc8xOleiu$IDQAv44#UUOiZ7zdajij>1Vpa}YRE5OD|KpMjxH>?WXakJ!?qt`C6r z53mFPt%W-@!CAQezNi`TeuZ^IyP@RV#?%^#5*LUL8;P3cAd zB8qMs9G~SO#!_nDZwEi@xy4Lr|M=egF#E7l!wa1cp%j!!!@BN(Q2S_8pHbWrtz*?* zj~^_Gosn5Ctpt&bf~{j8C25ft!ijp)IRvAs*$jvyeUfYA+*``;+z#2|mi1~zY$tpV0Mt!zRxJ=f0zk*BI@&<$(GI9!;5KpdWAr1f4QPz@OPSnIC&tce}OBTc3h#V%H+Q7tY3 zTg$-k_(UnD?WMS5BUj?Q%98-(Y(DvI4m|)d`yP5f%>{T0Jb9@fFIvRQwsG&%3J)0< zQZY2+&f*L_aXChm1g-~ix_sS)pEffX*HER;@PXEdVY-*M+g<5?96k$mvqqRuq6i>G zEn*rxg3)w#3BoovWn!|P_^8NZWW*XH@1qU9qST!C4)_}^z~iAP;%{g__<-LHVG?fS zl0KFq|KLU)_U%#sS*uT!?cTl9u#)|oTyKI&G%LF}bDbl4Ksx%7F;ns%5P4b;Kl$k~ z9hFps$ja{hyc5{`1mh1auxU8nj3w6=%8Ab|;|$i3uWO|{N;73&ZKmlH zIkyQ-RPqvo5S25(LytYky=91_wlZZ%uOg;IpH02@_&}SdSaVfSmpFcgOI}}P6;g#lk2IkO8J=c_O^(I$aa;HQfR6v*w>?>D8EqT@ z9C5(y$yG}*=8{j-FEtWQn#t20#9HVI<3CA{Whze@Qm*pF_QV!RJQXAXjP5i2m^4YC!kHEN=+{&DGGXT?(^tc8rR=3<85xElX= zl$D~GxZ23C_cx!i5^&Vh;lgU3jnnaGMvWFx{7B2jCw_ilh)WXU^+aWtk(9el&3BL8KT<7+We-N-E0xH~ z&(y{v3w<+E11o($YPnq8wsWB2FR^DuejT$Pdlt9%Wtf&0MPoQ%JZJ|^8kG8whgPIC z4_T`3&hX>~IEQ3(u2&^%sobbabM}il7XrrTI2U zp2-~TSfH=L@!R)|N(Z0$k5$V~W7HZ`zbZK^>kJ8dT7bn|e4Ki+ZNQefIoW}*aZ|L) zaMF?&Thor5o6vjFc7|y?Wua}QF%=+!cIj3t4Ic#}x6$5@$Y z*%~j7H9tGYLvvcX_Qs@;m50Nse$eBJJNFuu9Hwj!{HV((n*FfKQk$O+QWMfETrMER zUx_%LmD(8GWfk7xLpuvDc!el`)S$w(f3y!p?YGjK*PLv3p||A&nQ66x4*30lb+MDN zdnHfwUU;+?RI1Omx`rLT++!I&n>9+MJu<~wfLP=SK3YEITT4K?n8I?fOzNgAKzin#^O z&jGMzuiu0q|GDzeg$&nTSl^VY2y6*eQKfeT86>~}6~eHBnxb;IxJ$uFP@CV;HNOfp z&M=kbzL>a)p2Bxm?Qx;pI-}H^%O&4A%vbWaA&;{7p{0J;RJ*wf!>F$2TY9Q0`(G`v zgLYsPs*QARKQ3U5U+ex55U5q6o05+O-FvSX*Qi1qSVVusI@dEY+EYeMRAm!h0WUJ15;+#dfCmv9M@;H zW+aTzDpE@N9PTRB2oH|zH_iRHD7gCW1ui)7sJhnpAx|5PLv4nY=V`WIQTe9?)k%{) z^?bR{S4yAQ=qeu$cqr2MdKuK3S8J)uI=bfMTzWE=+xc##YxZ|i@95_$c#@A860m^!5^|{z4GP7flq3NWt?>NwL3}k z!IK^YFJ#7c@T`1)qI9Sf2I(~zj;gPy?0#Y)^E_-i!$g+iL5h>VwItbrX61RSrg~0M z+0~bI(1nFW>oLj^{6_}Y-6QTkYim-JTGNgyh%{$<+++ACQie&)>QRM+j>*LV!?@9z z7xV4PxY5-x;n$g`+7FplyYlondBUxxG3dHq3%_<2C7!(gkWN%JC`Hu{94p2B-&SH) z-^Ep}z6V_C=w83Q_m+sG@FrrYRV3{E$i!VyQ!XOL@f*JC4tUf2GktL<|R<5!|5P$Q2#C^KuyE@SzOj}&4|w&C>&p%&H}wpH~kDBj%^GfgsFPqp(o{u2ICVcE;(?`(<@;~G_=20!vL`hgm*rdReYT@BTZ4|9>Cl)4XjO!DiztX^zx z&NO@NLy~?cUZiFM>Fke}Xy;Kt67ZPcLFy_J@(UAqO1gu1Hmj3X;M~^W$JT3oEKRO! z7SuR*Udg7)zY&pK1`esyV1j*oD2}<0kq*v;f&ut~Ae@3TNAIW;LM?rlc!D@U=|-g~ z<|YY72Zn2>W+U{WjY1kPJ`WZz%0>m|NXvWZerI=C1zV_WgknAxL^^`bia6vqU104} zZyq?Y_3W6|Mk~7{IBwW`~}h2{%^Y4Q5&>)G#nn$s#^+s56M^vNq3p}KJ8Cg+k7oa5b0)A>7ae_#uw{z zT6fTtf3a&mpF92t6lm?#(bf|S^C%*y{hfnkq!I89(_vWXeKgkM>gRHq<|}&zWi@3C z1B!8$KT6tsnyK{nN%XoMQb*syeDCu^yM}feo?o&3$#oCpITrlvjlWG}?5bR7NxDJR z=8tkZ5m3_W$n~pgL0r4K3MoS3ByTMOH0?%WdI)8!Lr6`j{xy%1SxkX&Hv+-7<^hMZ(I``@rA#LlevMXq1L zsoe}XHoo4GFaScM+Z9SiJ0K(Y1FvhZkzRKV>L!eTBF^K&xd&7LTNhM*NXGWGAZ!Sl zPmw{(1j$B@KUZx!c*FN^6}$>}Jul4WJ=39;{wSL6fA*O-=_pZDT1m?y!`f$p1 z&9tO-!oTc=siAhp+D#E!0;+k8?vFQEZUL=-E!jUPs|OP7MiF2H|2?|ro$?|6R5(KdWCC3698Jo{8I1-kn$`vhV8y<$A) z_|qn^{l_%UQV+BIo*}na!%e-er6IAR3aDnK@rA_ef0gl?8pmy;(Y|GRt|^B8>&fdZDH zDb1AnQuUvX2y zk!?aRex-RdPPkjSCno7LK$v&4zmhYRfBQTSIUTiHmQywUt8cvlY@=IMu)9v|L@-k1 zwkRLeM|C|k?-l6`CXmB5t>dYivaf{NhD|SV~}?PI~$ZJqM`f z9$m(}L--da+dT+84wk`ffWsd{VpqNZ*Y?L2gJV#u>>PC@a9Q1)oZm7U%m9SF@mpj| zrZKg~;fvoj^(E7?_t@r_ zl5Y|)=Exdjw|?fP`{Dk2UIx_F#n+C!kULHk@pbLs+5kEHetn_DT143-wcS?&t%rG+ z(J8-*>pPa6XUs@ATM+rzCTE`GzvgxJ^D9>F1@gC*EyP0buUr9Lu(C^+i(<1++ zl+0zLn`ks;+{;mdGbkt?kfF7cpm(|ld(? z*XJsIi|RbSEkYOIK@Ez0`~ly&r)j@LQm#hvyp=G>@kG5Kw5v1+)5 zaT&P7a{m&Y)`L8-hFWj_xg$yqCGC-D_HGucr0!RBf7r_NATO#9jb1l5bsYurM;rM+ zmrw(T8l3li2T5h9A%W3MSq#AZU^QW}V&G?xz%A$tMW28RFQF=(La`t^xOz&_N&{jV z_N?S;a9si!X=_cLeLh`3vQOC{&J25RJWfx73v==MyT2+oG4%I0^~@-|*e>5&(Y@KhalJBr57=nFk+8Pzu@#L`0=gWJi`~!DmuuHIpYqL=;Vg zKg6w0xethlB#zXT6%5ek%c(NCtgWL}!Y{wxC*%FW;Zgz#6nCK!P^fZIW_jnb#K9FZ z7${G&;UJ`O)lyCOY7KNw5n8`@t16m<<5hC_S*K{N3pkE*H$q0B2Dw$iVPuXZwgv}s zhcY$ZvQKwAJ5L_@;rW-I;D=J9P=3;zHjkd-2NL@i*QZ)NJQdjWAe5I8xk{*{*_aGR%u$f(%-cx<;m z(JJLOFZ3?r$xLUVStW_NM}AlzI)qf+x*`ASt%uuG65cyY>+7Z11B&ALn$>#msg{U| z)+byf931j!O&bA(lHxVpbE_n4n1`YBp>^lkV4bP~YuG5?I5_r7Ivrn-2Lyc%J0a87 zCV!b2EKd0aqcIJPzM z|6}cw$LoW^lh@3tqLqm7NxxtN?iP2qYxYkKYm?!_sy*zKiD4Gr0xaYPZ+uX;F0YGwF#=J+s*|wwd)FVwGlI>L zb_m?Tta^^WD4XyW=AvEv^vz7(5fNq`BQ>yb9yXmdemAOxEu_-CnpDo6w@5X~%nr;!BQZWg@_j={p2& z^Jn`5doxHz6qu_FmyZsawU&!+kwPJE~i!q*0c;xP}biU;+nGa9RYFC5JXp7^Ib&NFMv-Db5i+}(fgan$uj_BCO>@aEA!7>lTqblaYQEE2+ zHy(b1^PpR3`i*h0V4baF+|X5QU3r5=?SrpldN+)6TEiw`mnSH6ys}W_$={5xr&(%0 z8}MjO_Mf3$zBYtdb(mPT&ky^e4R9BS9eg z*${^eF_z7MmZZ;VTz3{L~Jc zwkgkR3L54`DM8R7N=b2Xri-uv0p*Gl%hM;#W8&sQVa6jZOD6ig-;M3~8H5aOF*=ZB zbMnM3Hov5r1CkB#YH2#Y*Fh>pIbUult0n%;)Yzdg{==z>m0+xZg~a1=yMfG>ZfBv{ zi$D{YKRtQ6z>arLU?x?#&jUfX=;ED!%7+`Nu%HxOsf-oD`%^Ii0U5p}A0zz*OP9e_ zy>hSo=+W=Z97jyzMY2Xtst^d??d;cIsX*r8sI~I2G0qfnLmJ>_NTC0AGe{f!+F0fT zqQGsSAC0&>$#b|KUjNQ?XimW-IqbHy?qj}|D;WHMnsww?$UEhwNLc) zV6Z{RqW-AvX#4B6VxO(=s{9`$-JgAm(@YeCt)_Xzb9*3yH1*B~CYpP_bibtZsdI?d z%QCw!!szwoZ_pPXc~w-Xbk%(c3YQRsnyc9`7%(nJG1iIfR$-+*y6r>io-UiFGi;OL zbv+eq^2D%#D4Un=3zE{r!C1==m_9F;?S+0E4i_v#ffe<3)+h1@MB`>vhe2-bBR zP$QI#bM;vg!Ewb9Q4tqJ(?hMe1Y<%NzH(E7KS>T4l|0>=7bA8;xKZ7NilEq3w2`#j zw8V&}ck<*~EO;p0>Tmcp!VgI|h}wNF|9gk%t*tn_`-G#YC4RT*K>ocW+F9^V763T# zj*baL{A#d0ruk>f zOgQlBuWbd-$+;9Zw`&Y(;iM95r-Ii=YW?ELxj#dSN$`%d{zvL}1i zw?9+L?gfZnxpFi?>A$yBjwjz2ak?z)W4tSgZlS_QKb3rrq2I_a{^~L2*?L!cMk-=g z+jnB>FOtG#rcRCzE1kw~o@#GLd<@e%D|dSIWbFC#`_&t&QI}yGmSaBaUl`CW!;zm( z?x7ziDz({MDL%+Q+UmX4RbgG!iyr?4vlBjwK40S4h`?QdbfU;#1Bx#g=wBk9fh!&~ zm({M3YY)Deteyl8ZE|hU%pI`wjrq6_Awpmd%HsNfH;^D(wNRz6Z=V6D_5)s)_K11c z4x{QlVm9Kf>OMCkxAMsUEk|zNZ!ZWM$%J)zU)j1^QAFtxnUn|~V;Fw3evQ(@wX!Y# zb8QP6xgJ+qVVEShxoe_f9s63Gqg@92=PDYT2arJCTWjQ&SWC^%$W7SHZ={f^Kh-W3 z`WfM+&QU=@Twhy+?Z0WXl)Yg&Lmws?HXwzRbokzhcyOC$8iAaE6>@Hr@XZJ=#phcu zPc9w8G@C_GJOfoDUU{naN>>86RSr~g=hA6hjhnHzvQ~V zHJxf>%}9PxGN6zg!O*q8KR8s{B{@`M&hsjzVy6#>^^%=xdSUzGS~hzP*o<~!{3mz@so@1C z5Gbr2@pGNm-Dcs{SiLUe2Z2UtWc}6KmkmvzSn9*z`I;j_Ml9W;#s=XAi*@iNDBiCl zS_7WQQc2vmFjo$odF>%eAz+;5<-@DhzMWvriYms{L*<%9eBxwOFE(8w?s?bHEq=n6(v6fJK11=2$d&-oDCd5*{Pf%PUGd}C3+qF zslslM+&^T@zzv6WYINiW`We_v&A=65lRldw_Ttl+`0nEv?gV4G_<~0lTsV~-yJ>b=#%6p z&2X_wS@#$65|Hf-^%!nV-idFslKtU4D)j=XBs0a5(g>v|i?=<%JKY!l>j0?ltB9e) z$8!0RS#h6^ZlGSEY#eibFo^*wVhDJ$;&(JRz* z6dxr~J|*!gNoU5({hV?WzWLftiPkeUwY_)-Z47E_KZT8PD)1ihUffx%0y%g#KhmW2 z&OPPz1A^n73>O~ouRq=y@!RCt7H&BD9e2z2m)yyERKt3NQ=fnR_JG+@J-g^+3UF8{ zBJ)Z_kc-4qEHk^>?AIBHKa6*)m_MmUhs+G*tWZILsX?`CQ`xYh!v3irr(jYesisQz z3E>a%^WEKbjOYGhCoBHj&`KW@WE1H4%tR!rv*Vt}3OZzECufHWstFG0s7Ybogl%pN zzLv(OmyhP%AejNdt+Oe0ALIFPu^a3kJ?Xm)u>`tc=?PC06?SsPgTUQPOu|kTNra`2 z+|GDoEdDyNq5J1LdFrxG;S~`|;3h7w6r}w3yHecaJU!#27kQeAz;+NJsT0Hj^-iv> z@K9o?Ji7off>Xc=VQoJ4I}$~8hAKcFBmzj|F?369Z96NT{Tw?{UcGzruRWc&&gpiQM?Mj}Yc z>Z1Ge0eu3|LiVM)&~rfdZSi>+*-R!?U1-X{-GVFq??ze5 zSzRXIv3IO7s5fuk{Jgk#u+~J`a5%b}e46ijJS%rf+Ggf$*xK4UW7`U^_3*q7XIzD4 ziM=AF$zcSb%+`w|-=Kfu= z(h!vL&p1cpEqDBxmjdtnd%KDJEsyZGt(f{6}BjMPjwG>+P$Pa9jY z78-5e_~$Ur35iTwbjSi@XfCJWsE&ajO<*W+0!e+1Z)neh=o|TT!{BSEl+`T~wVRfI z4vTSS(Z7LEawk{rqkiYedsXhGyfW}HTDF!tVL?ECs?wfU9|9J6AzUdU;INui*nlv5 ziutggw$FY4?b_4Ag`Cpx z^W=-LpGzVGi9VO}@^HoY@ruWp;$Tlovoc5hq`(^|M%kr?r1W=MH!vKmW{jPQc9-r= z!&25ddQv4c%hf-;VGaXaguQR`0m*fP@A0CAe+=QQwMH`G+Wnanj^bL!^cJs{Oudh@ zu-DCf{Dt?#`FRzFy(R-3^$OH)xJFB>lduP%NCE`J$>3=&^F3L-fBHs2K|vjf!X0%- z1+f=5F}62xGCXF70{OzGDbfqLW%oE?vljwMqM~O`%UD@!4)^Ut1<#Z1ItuU^mzv+M zFMC!|na<9vr@T0)I0?hWWVu1GF_UW=sTzN^gIiyyf?E z(#%O%g!I+`gQ*?Gu{Oi9Xze?Q$+#t6IG$N-zzfNL)#3XbSAFjNn$b}n&)Hy*SISqDty(y@vDTCTDeU|bKHMU&i?A;?ciR=< zI$#X&BcO}^M-!Em(-;dZBV!+M9krC*^&V2YXB?JC-!B?Ctr;Uo% zOR4?o-s=)A8QG0+h`Z#z@4J1WTQgjcD^b^&5u8Oku6KvEWpIpkyZP+_wt^Yh6u!Yr z3xOp!k{MJ-HW_#NRGb<=9o5vCK5TELwX1uZ=(O{2{cCJxg4)=S=u3kjSNMJ5Bt4j3 zqMu6GWPioGG1Q$lUiO4LneUMVW8cbn72nA_Yz< zHe};=XBPs;)Y;)OLS7jxW^hi|Uzc)j)Ffz_Xeqs+vcxKCYX8tG^{s2X%6@{7o-nV# zU89mCoHU!r2cf#K_?B-)nwE@TP-Iv2eTJ>8vW1rL##foqA!&|5z~g{2Ml{mMO4Vrw zcI+PQN|Syg#$s4aHdfd?l`nFR^_yvuO}5Nemx^tNYvW!8A6n9~urbraYl zqd=sw+4cN52Wl8-70rj9J=?BXX2oVRD2D9Ms;F$1Dz`|q8qKU8&Az5JTF3zV{Mr3` z1_f^6C8}zkN9`;m1+*t_PBH8cSr>dv(EWu5(eGr|0xJwA87;DJPy5U#~S@ca}kX7?7Y95wK$92X@E znNmEFPPY|jgLW3026l8lkoKB#4CPfSo5o%2if`X}>V7Ra^;=mgi+1C-R@kxLYx{D_ z_v+Qma5=Tx{~6535FsN_ain^t}@ zp>hW0r*j9qtncO~W}CIHm6P6Sdo3xwI5RFUR9L>Z_Y0h3F^bPI14KS$=BLIL9J?4U zEK{isS<6=XE4Uyib4wfpaO}Sby}iWZwLaVy#`fVAuMV|r4*ltKc&f2eT?98svA8eR zRVC|rh4kq~xT*sTFn47%x0VqYSyFZqjvXEHK0Rhbf{Xn#+%Kg8^hEYS_k=ESZ>Ss< z6%{o*cc$$UgaF-)QEPSsdL{B>;>92|h^D#V7;+pFz_0=EfDZZX7hC24;K?6U_kZS0 z!FocFU#Fr2NbtGRq5X}4sOHf){exG4mVV;0Jd{=gZ@K5?FD)aI`+<}%l%D9Tzuds| zH?9{t`7SQ>zgyiTVBes3HPzEs`sGBlob<81pAsrvat3Ddh4P()y}+fbpZTAW9!(4T zi%#vTzjimLA zi5BTC9UU#UtsYI`2^fwkF^Ka|ldTAWd!3f+ms2q$S!%OlHROYoOKrTa;W3}ua)Jq! zdh=F=ZW@LZ?xY|uAMfon@AJ~zl|>`JwXv6j`X99IV^D7XclvDt_ibLY#9zBiHUp>6 zyv*qq&K-z-AiVUFQXtZsb5g%0`XeLvV-BrRP;fX)yGWQar~cP~619W*UW5PQe+ zLb_izLM72~1Ww^`)psr@E~n}$f3T6z9rIh@YVswEB)swX8y0Fo&N{A|r>x z7UYtrOM8DmN?nEs@^F0heLGrgT24#$NP(W4ZuySt=O)mkX>{gcfD$l)On#~}b``Ht z1$9-C6qHfPL71yr7VFMQeZy8yx_Z{pjFU%>f!YysWuwMSycyVtNssJD3-g zZ1p?CcB{3U-Ot5mlrOE%G}Mxkeiln;?|#qVWDiaA-7)!o%CiI;;q9um6Wu|PLgir77b(w#u^Soyy($HC5 zSND~@%;Krwy$6{nS{VH!%duIfgd?frM>nSIseu|(cgbJr1DNc&$hOCqZx*8%&4xxs zRuIuYji2v3?+Yj`pJnbsCB-qTK0Z#b*HnYbXJXespJz*I&G0!|Z|xal#Ae_BOVZB+ zNzWrtcbut#FCw6SV3ob4ap>L-(mq{URJ7Zi=D z;d6`Q$4)R~CtqzLO*A3;TFInQSLrlaT}5rO8HTOm{D(F$w#&GKl4XJZSS{{p(w7Q0)wkk1Rvn?*r%@uUBO90`Ec%OYVahJ+ z#%<6*s?aNU8Xn$%zmj=yIAG5y9!5Eny($m-0^jCfN1K{T7CGJU4awli6<6!yFDxn^ zGez~91+QHM5}3l><7^j-B@6v=RWjZtU6vvWxf5Z@rmA4?kDu@btWD?p#lC2F4|8v$ z&>A;&b!ecQ49=I+@Z*((p$??!M;}>Ugc^A|_L7n!5}O40$|9p5UsY zHRaVr2?*&EJQYnR?HPz5WZo;J!p-s&A}{l6cl?KRcJi^#Jv^f`4!tY1-UzSKdt>MH z2l)I1pX2BOJ(~B~Ob5Lbg*od&u8}7Zll%D?-$V&)%*>am_lDrn15pxnnQB_(#0Xqn zX6dBRx>X@=tYfI!yVjR*q|1PIb92qlX8;sxS;BsfICPZ`&DG5Q1Yg?8Th(@O)L$Me z8m<|t{b^e9#CW;1%wP3>d&J~uP4i|KZs|EbByA_61($V&OAR=zZmyo;ODC!wRkQ}r>@s)+u9I;UVAeq+8b zQO;BKljiMr`q#;gxYW->QvLv9r&!BVMIX|L;&7wLUSsRG`d#cg-v4Ct=6~fKH+M0TtzwQp)8guvYB@JB*Nlp4yU8Fg zY4)~@{Tk(p+I@mruN}e&ts(NFkGLxaKEdE*Ia#KLw)& zoUwkPR{5Z;&$XHHq6SurvoO{XWLr&56?fS+&wAgyk1D&im_w477k)< zo!u`jXcZ7!6%UiT7Z`gxK3s{AGqCn7Im(K8HiA1H%Y2bgD7!cXjXNg=vD3x5bHxT=$D!uVSJ|yq*QK&HO z`H6R_G8#>_UEv&(wq0(qag^bo5xj~kp(wM@LV&qCmK`!(hi<;ktPM=}u|PqJy;yCy zBn+=s(2yae2cmt3WBq(^+5)UDCbJ^LQd?3iO`MrysV;50J8}t2b2#P2_TrVJ^|`{j z>^m2NZ^tw1yxZ+6`ZjQ}+&zCtuzZOBwAWO^a!47&Z*NG2u=X1K^qR^UK!MKMVzFC* z%;u=7$@+n=b8hJ20r!0C0Shj&!d8_YRW(w#V3Svr-3uPTM_0y{ZgndZh zgzVuAd<)PZOyn0jRnNO0q>5w`X(Ec}nwHy68`X z^*a@5CtEqh@IGvRSBiLCt!o}FNd~C*lm{QsN@ze(c&v=9Y-HISEfa();L|yvdl!GX zTqQY2NWgHD@&JD12g#g%m-@qIV1mszFP;q|BB=%ctexa`fyM(G6^S8K-vEsSNL5M< z7@e5Q23Yd|u=C*knJhIh{1f9vc3TcAe;@eQptb;cC^!-N^*1pwv<*EnY|#;=nGzO$warET91ic3=vTucyHJ=D|ntj1Vek(1UhXh!JBi0iBA{ zNUCvw3O@#P_1GKPaz}vYD^%g51bAu)5N`qA?K1qDheTn+5n;2*tsl7pCK-H+gNt;KRnvs zL}2aC9Xucftb@3bL?`!pk^O#x4%T;Ph{3`~Pt`q-n*_klK)4EG@&HjPcPp!?*akO_ zdFwm?0+W|#1PmJoJ-^xwbg?s=*!(lpXZo6j=kzP1XAf18Gp!4X_q2YWA%+%!%9k%9 z3QUI70+@ehe5kgOY7fkRu<~%aijs8tjd+av8qHT|S6pHLt0q&VYek=9b>aK*`%*H| z1Z%RyzQTP;aM@$GZ`9Wu(5(GDweIiX6_~%;@RGvZtffyfx%gfXO$g=)@{tm(N>pC8 z;QfTVLCV^|_wK&y{{jVSi1Aft7<%Rg;I^V4nKlJx)$73=LFm0#w znEZbSq4Eu!eqcDg0}Q9@g@xF*-U1L!!^J!WDPYoW!>$I}^d8Nx?0zxg?z@(V0gZo8 zpN>cdTB~8khSwcllgf`k&Do%AVSnKr01ZVnN$S(YgPHc|Uix?vLVm%Rv;Z3riX=Ov zv_pG5HS?D4WZS9KfZbjm0{MS=I?qO*4C8~{jx`915Y+_-~UBV zNvysDLP%VeYoC?QnX#KhokU8ZxF z5V+|}{anaL49EMx4B|sx#oJE7^i7|+62#7Y#u_ozT~uMvlZJ0&9Htz0Lq|UJzLCBLXWW^IL@@O#o9dF7PGOHE9 zE-bdhnhI9mqM3HQl%>F(GmH-Tw<-jTL{|BmU8{VAIFAj4LA%qX!OT0_QbKcLHW$0~nW ztoBP^*fV){9pK&GEPrsxn-3L7szF=L{1ho9`xgQ$Yh!eQe1m~E4!IupN?LxvHtr*e#YwbU7 z`vc2_p!QZ3+lV1bfCwdZ?x!r+&-dSeSxh!+2G+aorcM(eA0 z7QwgiJ9Y+UTtLenlu*eH^s?oVx9cl%yU3qZ_T;x=K*$rDZ7lA%zumJ|EmBV?F3%m$|rd5 z|I9D>X5a=9HN#iK{~M?24s&j_fTIrg!B|@pc>Rn+OI%H|(MbA7C!JO@C^#@`Z&cnPxQMrxeQ?aF; zv6v5~F$dLP%irXan@2#?W)D0jC_MzoL}O#FwR|7j;gfU`SB}w#0EIoh2bGk+&j+$a zzP#qhOH(kxbdiMb5~_<)BrUS}gz2)smu;(^@awmJj7f`~c9~~!)3U8RBx9HM2DlGh z=H3yX1uU=r+SnshvXfZ{_h>`Y#oNDWL9qNsCJNe9JkU|28Io6`eRiy`h5MK+4UNNg zgJliU7;eTM-;q+a!H4=(r4{a>Lr#UBv#^T* zj7T)zz^YYp8)IvRbT3z{ptOE%Ca{g^7UTglbT@TXv7-MFgj_$|YwDKWEVBH2me|0!Ih$UH||9 literal 0 HcmV?d00001 diff --git a/13.ProxyPattern/2.Code/ProxyPattern.h b/13.ProxyPattern/2.Code/ProxyPattern.h new file mode 100644 index 0000000..b2e05b2 --- /dev/null +++ b/13.ProxyPattern/2.Code/ProxyPattern.h @@ -0,0 +1,64 @@ +#ifndef __FLYPATTERN_PATTERN_H__ +#define __FLYPATTERN_PATTERN_H__ + +#include +#include +using namespace std; + +// ɫ +class Subject +{ +public: + Subject(){} + virtual void method() = 0; +}; + +// ʵɫ +class RealSubject :public Subject +{ +public: + RealSubject(){} + void method(){ + printf("ҵ񷽷\n"); + } +}; + +// Log +class Log +{ +public: + Log(){} + string getTime(){ + time_t t = time(NULL); + char ch[64] = { 0 }; + //-- ʱ:: + strftime(ch, sizeof(ch)-1, "%Y-%m-%d %H:%M:%S", localtime(&t)); + return ch; + } +}; + +// +class Proxy:public Subject +{ +public: + Proxy(){ + realSubject = new RealSubject(); + log = new Log(); + } + void preCallMethod(){ + printf("method()ãʱΪ%s\n",log->getTime().c_str()); + } + void method(){ + preCallMethod(); + realSubject->method(); + postCallMethod(); + } + void postCallMethod(){ + printf("method()õóɹ!\n"); + } +private: + RealSubject *realSubject; + Log* log; +}; + +#endif //__FLYPATTERN_PATTERN_H__ \ No newline at end of file diff --git a/13.ProxyPattern/2.Code/main.cpp b/13.ProxyPattern/2.Code/main.cpp new file mode 100644 index 0000000..132e87e --- /dev/null +++ b/13.ProxyPattern/2.Code/main.cpp @@ -0,0 +1,14 @@ +#include +#include "ProxyPattern.h" + +int main() +{ + Subject *subject; + subject = new Proxy(); + subject->method(); + + printf("\n\n"); + + system("pause"); + return 0; +} \ No newline at end of file diff --git a/14.ChainOfResponsibility/1.Picture/职责链模式UML图.png b/14.ChainOfResponsibility/1.Picture/职责链模式UML图.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8f0ddcca2c16fb05060a958efd63637c433e44 GIT binary patch literal 11198 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 literal 0 HcmV?d00001 diff --git a/14.ChainOfResponsibility/1.Picture/职责链模式UML实例图.png b/14.ChainOfResponsibility/1.Picture/职责链模式UML实例图.png new file mode 100644 index 0000000000000000000000000000000000000000..c2299ef00fa7ad44ccf1f4fc7e9422d4c9837382 GIT binary patch literal 25213 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

5< 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 literal 0 HcmV?d00001 diff --git a/14.ChainOfResponsibility/1.Picture/职责链模式举例图.png b/14.ChainOfResponsibility/1.Picture/职责链模式举例图.png new file mode 100644 index 0000000000000000000000000000000000000000..53aaade67aadd699a0e0b6ca644170f4f1a7a342 GIT binary patch literal 429935 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ⅇ+x2?_R^E%7@fq%z2> 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