From 3a7e38f91de9ad61805a5ee04470f7c4b0aa48a6 Mon Sep 17 00:00:00 2001 From: John Webb Date: Tue, 29 Jul 2014 10:18:51 -0500 Subject: [PATCH] Added Decorator UML --- Structural/DataMapper/uml/uml.png | Bin 13221 -> 12696 bytes Structural/DataMapper/uml/uml.svg | 2 +- Structural/DataMapper/uml/uml.txt | 1 + Structural/Decorator/README.md | 4 ++++ Structural/Decorator/uml/uml.png | Bin 0 -> 16897 bytes Structural/Decorator/uml/uml.svg | 1 + Structural/Decorator/uml/uml.txt | 29 +++++++++++++++++++++++++++++ 7 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 Structural/Decorator/uml/uml.png create mode 100644 Structural/Decorator/uml/uml.svg create mode 100644 Structural/Decorator/uml/uml.txt diff --git a/Structural/DataMapper/uml/uml.png b/Structural/DataMapper/uml/uml.png index dedbddd37f7f219e30f38b1d2422df21f1ce978b..31cb39990ad708583f72fa77869989ba3774c9f2 100644 GIT binary patch literal 12696 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 $userIdprotected $usernameprotected $email__construct($id = null, $username = null, $email = null)getUserId()setUserID($userId)getUsername()setUsername($username)getEmail()setEmail($email)UserMapperprotected $adapter__construct(DBAL $dbLayer)save(User $user)findById($id)findAll()mapObject(array $row) \ No newline at end of file +Userprotected $userIdprotected $usernameprotected $email__construct($id = null, $username = null, $email = null)getUserId()setUserID($userId)getUsername()setUsername($username)getEmail()setEmail($email)UserMapper$user : Userprotected $adapter__construct(DBAL $dbLayer)save(User $user)findById($id)findAll()mapObject(array $row) \ No newline at end of file diff --git a/Structural/DataMapper/uml/uml.txt b/Structural/DataMapper/uml/uml.txt index b9d5239..a521833 100644 --- a/Structural/DataMapper/uml/uml.txt +++ b/Structural/DataMapper/uml/uml.txt @@ -13,6 +13,7 @@ class User { } class UserMapper { + # $user : User protected $adapter +__construct(DBAL $dbLayer) +save(User $user) diff --git a/Structural/Decorator/README.md b/Structural/Decorator/README.md index 52305ab..4eedd89 100644 --- a/Structural/Decorator/README.md +++ b/Structural/Decorator/README.md @@ -8,3 +8,7 @@ To dynamically add new functionality to class instances. * Zend Framework: decorators for `Zend_Form_Element` instances * Web Service Layer: Decorators JSON and XML for a REST service (in this case, only one of these should be allowed of course) + +## UML Diagram + +![Alt Decorator UML Diagram](uml/uml.png) diff --git a/Structural/Decorator/uml/uml.png b/Structural/Decorator/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..bb14f3d9f167443c92699cd4eaab2668fa16e102 GIT binary patch literal 16897 zcmZ|1bwHF|*Egz&ND0y)QX&kkGz{GWGPHt}bc4Xq0@4lA028^JGis04TqDxv!k)8 znZ2XADTkdY9BQsf33}7;(9nYa+ve6Sw~v9U3(D=!9(dbVUM~`QO&MwNkq14X36Ugj ze{9Iq98*>-A6Ke3Gy6{E+I8~*qeQjxz`X0pWqpi9Q3Z=*FlMN3n@X2qk7*b0pJ=B-4{U?Qabtkix7K1bTfB6vnK(-vD z&3>@^;dTA|a(Z=jQ#L=8C;8iVZRyQ+I(i&S4j8Fm!XM(HtkoGz%6VGM#+?~xnx-J! z^Fh!zZ=NlgxBU7N{FwC7^(WziP0;!jvY7;4n6OvJ z-c6c1T$C_WW3hQVsk-)(_Q^}~$={FShH3tMsQJ^8gU?qM3VZ^+a%2tbvMC4r(Hgblk&%Wd`Y+40n zpW{1aBqY#fR8zH#o|2Q0aI&}%c(r{K@;;fjF}Bp1y1o{~A2QvUYcSopIPRZwT1z~~ zN0)e@@jT%h!+TmxG$e{| zq$*PMPM>p7VZKPD@;7#Dxa3Co;HJ)8Ni=#3{$pty%ifU0=o!@JFrz)8oBm>lN;KJB;O7-xQk7@=KYeL zy=L)7HOc&pPvOzg_#<)els6j8O-z19-G$QC$gbtP_UzHG1@lmn?vTesD^f7(dOw+a z+mXUq#VqFb>K6*v(S;s5ObW~yS3Rk@sG}T|Z#J@;0FmLOes|zrc%(f`z@UGM+{b8Xay*u8^PPOyw$CY- z#K7027>9sv9iJsxfnhATI-|$I-K%*v-0zZj{?>3;n53Yl&)2s`b6eh%=&Dc?UoF|XZr;O z`cGz@oK3oVWE&{tRO@_&fJU}s>v@@Bk4K2-@r9vP5yaZo!-F9h5ra}3kmzKs@W*ckKaLPV@J#xa!`bzq2|5XhT~1C_`1j}gbDuDt z<>l?~%!ki4I0>>ltur&<mr-hAfsLQf3Jt$C#%I)e?fue#AHrNuWXuQuyu13yxUn|M z!DsvW0cDfUgaq2n;mMgOFK6&+sEsN4 ztS7XX=2+SSc&%57>&ZCqsSInZG=D9fD9j77^H`3)KMe|tmz5>IJQ(UUYOxn-*?ml3 zH`ZQd?tnyyIsEc*z*Gyrdm}@|ErU2@e&4;8_9o(3`5jGYIJ`!(dw8uh#wP6*WKr5R z8~hWI40VT>=T6lZDAgCI`zwXt6h#^9vQXUFXo@P&l!5e68Ny(G$d<9zDL=p57_cNE zIzurXQ4eHXl+RrKRdu-M$zx{Iy84ySmwFZU3vkPhPxw{xQFWO0X$vzUiPq)k{Y4!)u`8;F1r6 z24lV2InE+Nn%Q@-h9W4wv9q;845AZd5Yph#Y*Iefa2lVDv?B|pzHeUqrd!`%`3XbJ zFzNgGx!0RZtDUrZo?y=u{>t4uO`ECaG+DZ}tjNf48rKbVTE$fCJ7)7Q-G1x0zu+TR zG1ydMh~mVm4IR_59-^{^cZ0&SCJmzhKh$-a|a zxsZ<@Vfkgy)ZT5mJb>-JC!Msifpwft+ssApa-16DqD8p_7P$FNDPX^k)&z z9d|7)n`I+6oKbJi_D%gB=f+$MxL1pR@0tKVGHtD$cPyPKmkt^O*7G4RHwWjrGDrp+o61iEdQgTm`u5vZ&^Y z&d3=SVBs2@C~q2WM8T3h9{&B;w)54xf|pD3*;FKZ+09imEFlW20NaiRHN5$Hqv>z{ z28Qou0Cf0`_87)0q=OPnhSr0z0&Pyuc zKWnpf^vfn!7lKL?Ma|8~^|4@4A8*H#9TK@Hw_7*UOK^beH<8NXfPEK&UcIifE6rC{ zem*drEfZJ#>YGWz(z40s%1Zq8z_N1Td{f#&Bg5ZqV&Q}b8Q?rS_?T1W@^*7O&hL6Z zE;Zj)XUXgQo2LMBcgSr11smHPwRa?nHr(c7jLsf>{};*hD5`I|id#JKHzL z+!0dwNLv}4wPE?hv@|s!YaAR-mhQdrU&XF0%*@P|w_C!loL$m^eq~_k{c0Gy{F;l1 zNW_m(=lJ*Ax#sEHH|sAj8K!XQEFbAIEdxyQM(#UoD^yC zKeyu`IwS45itlDVVn6v_si~C8^RpRNQInD~A}c#kFA4NqH2DbSe!$_(sZmA)pChliC$hVAFTps&7nhQCvd{p(AS;2;+2wH)S5UK&Rx zXuz*7U5Rz@@LU*%VjlEF2rG@?qRRyhe*QclcJYQK2zENFkR3OtMum8&uMg{ZsW;!1 zp5A9<qZ{cYA1U}wnsjZw@;^Vi>h(IMZLSac%mAS zDSL^^Rm|st_b$A|y|E=QSS=%?2f7MP#(0aTYo4?tJF8~VcMQ&1prE{qku^xCp}uqI zM1yhnE+zlqy}x}QYvnV|w|}eSvD0l+OsZX7EuE^Ol846Wd3i1H-)`Cx7K zSNUb`)YOgXDcruns87;oip(9odrSA=s5e&j8AB)Avs8szGvUY@JiItGG~KCNtiDIR z2`V?&FDq68auU#TmMXzG%lO@+or5=Xzb9_Vv7IHQ#mh7CV|TVKtL2vJXm@l^xj}{@ zbGbgk`()=MvZi_=l<3~-@)I}Da%|kWkiVByfe>LjrQa+d6Vd9e_r5L^c+6-wO6adr z0eAB6Y1{!CqhKrZps}e}bn{sJCt|TpalW<4#eCuTobLR$Hb3yXm$Qh1h8iV+Cc*@M z_9c&KbrHEFLp9-|Ve(xS3$0{mW%8^2fG!vosDhvxf!rpSK%yU!wvpV^mT!PcgeGuv7B z&$9e&2>sR#7O2KGgY^Oa>|n|>k1reiD>UrmcgHcuamHb0W{f*(KvaZOeVz#lro3i8 z6}X6fIXvhkvEBV)kKgt>mFqnE3vB7ssw9(H(ce4u;wahussqMIC$_>h{#LR5tfViZ){8VpEdKgERRpJ&^i$#pawKxsiGdB_sPkizT z$r(|WQgYrlo8Bvr{@WJ}hWDRo^*w0|O0|%c?HV9d>;3Uls#LZUrt8hltH*QMn_}V} zX~$o#*H-u=jG~pva6Q8)bp7Ia)^xIk^?BPbLdEl21snyk1^NXpqVN8^Zvrt2W~5rA5d=&WFV8ELq3ff`HkIg&3`z z-rZS-5sIv=JyDKyv>J8~M8T5|6u(HPGoR)&SMfD_eF#hgijr35lu)aTyFx0)SFHCX zt^T-zy!tBxr~6FLC{ITmyjDk@Z;ANAFx51WdbxIgWaN}jMI8Lh0@7>p4kuEUh1m$l z$B#rM^@`g|5Y zT4Oll^l-5k1@@ofmEjL#N&ITu+DhPY<}LGQ({s8nFzqASo&erB%eWFH zr?P}TEFb<(AQ3k#-^P&%{1Ay#55hR&>@hteh`5?}#$|o(b}mWNTV~)%%pUFUZx2IT zcDJy)b5*1pp6bh>v=w2G@7_jyAYH#)GDk;K`dF+L`1nM(z&bFx6+C{~^bzGvDxqu? z`>gdgT=K!q4g&ZA4D$di;pXcH*_$_${VO|;7?(yC?tOBg0`s@o=*w?jN~~2gKMo9| zKjS6bcr6m9(2;u!n#ENRuT4qV&C%@{kedZ=T#%2@Eou?qt?=sU?K)LoO84O3mte>} z|5`!dF;OWhj|RqAUC*MWrunYvSJr?ryh~KZ4VvF=X+07L^Q<$7|D?$3f_-o)rJ{qm6O5)7STlF}nWu5N2 z+hz-f({Dfb`FAt_$5cOHA3kBkA_G@DzNmQ9Yv)w%7u2FUN@pgof9CzoLKO(l-*nC1 z)2=6eSPHHv&_E;Qv>bQA&NS-lw?^Wd6(qW9J6JN90u_W;Jh`^tE5e|a$EUT^H+f^L zT6)}wv&@zB!Fr0MxA{KnnkQRrTfPH6FmqA!2~BiuhMT836Gve0h`U#~&P!d|7pE@s z^Y?*wE7Fl-v*fp#iHFMJyIARSPu}1DixUAH>i-TC0bvEc^WDt2HpeOzrijQ$B^Zp+ z!_3?q=*1j%)WyfNGl8=&4GW|+SBB_qRsmb-b}_zFeAPis`}=+{Rm$h(Us;*W(IKbe{bAU{r@yssEx<#_iB8w<-cRLuqWiL3 zd;Y8Q`VXyzmGnUm#w>uPOp$MkD(G2Y0 zZd_evh%LRQGm|Mq3G;rVa~m|`q$T7?$rtoo5$4!?;}}8==WtM{tsrA{n&H`WKj^Al z0lt31Qv*@pgtNz~TUr(66IREFc#@thN)Zkhavrbi?T1zz_~QoO-630EQcFC=zM~T* zU}Af6bwB;J5#|eblrYlH&HG}t%~!yxi~N^aXBf#HLjPqkTl~dsQ6nztk{7`BUGTA& z#sS{&*_qP7fX<%V=DGm@kZ=p@?6BC`XD7=_x!<{!1DwqXb$G1L`!>@Q0bPiAG##uc z21gAIA_kZo&JMHKWHweW&t321&P_GBt~o57DW~#;Y{#&%veru7Q}<&u74Uw?pZlP@ zw4`yoRHqn(69C%cC>GCD@0^REctd$Oc9VY z0#nX?i87m$voS;pc1!0cYu`)zdgN)xMhYDkC5Iy^7Y7Hq^I=r&7149DwaxH#r0S=$ zN>k&dRUFa?p9992OIGs(giun|id?i&kw)Rga*xC7ov8|Ejd)1#V0`=?xK)SIj*2M> zCcLO0;Kz~?K?+CwO8r7y@Rwz;d4KjgJ1kVKgeZ!hf1%1$*VH$UrfWg1mP~%uA8Ceh zp$*S97-RbE?Rl2#;S}pOs7ZIc+#nt+qL&jcdRaPJs7`5yY)gE!IoIaH;GStC$eSQn zoXTh0fm!f<)dcCZ&^o`jG5&eC)%wr6I!lso^9(i#OS7kIR3G!rd7BQ6;ZwYpr&>5{ zdY5aIs{ps2uuQ&wFxGSZe!1TK^N%gyESG58}!}pK~P1;j<>I7XUjuB+gC%PWfo&(IZ9z^Qx*PDE!&V z0l(_6V0`%`j=cl_0%~e{xSE+@T6p$BhR?5_BpYPG4-hkt;8qK=gB!QDK1NjiF@=Kt zW*d1E`CR2g{L?hxcqyE5cJzI86JxJR^8ypa;2->8a?vRHaGbfmRxj40qqMHhZ34`> zIvZ_ieua~rRd@H^x39*=?o5^;?g&^xp}F18c~~2~Maum7Fm{9~HLMk@dHh^AV&F9k z`D9OoE^MQ!YK4T=#%glHkjlKWFUfzl##+9tpu*t*AP|DpN-11ZNR8;x(o)a2v}5D8 zHgAUG9UB`t;@cXuY~m6$>yEdTp3JK?I_uQhNYL61XATx=w)L<)KxstEq(l!!FT@AI z{CC^((;SQ94$j`vZIYhqH$F~RdO&H#Q~jl-KZW}>+#<+X7WVPanVs(IheHDcqCD^_ z6eGV~K%7&f&IJgb@$tKk6HCGyEU!POvtWro|p%$+9C9Sp9naNe0J=)wxb!T|i7y~G)#%jE}f}+-LUKoh0!gP(b z3_#aEezaMKq<(yPtWs${1Vet?xB=Ibt`NM|Pn^vQm^N-B#C$%eg=AHaXG+Xp{V|q( z`Lg73;4Q>PC`@qo^V1W!9kQA;81`*K)-9L{#pc}C7B#9n*xA%P6fo zbLA^vt=iev-7Ic?{#=ivBBT!4r9<8*EPYO{Eu({r&q@kO9~{%7q*`akJ_s>gl0cd_ zxIT@&)G62BZt+C)l;^aLr}8@G$bOWTwKMMn=+YZ+YeO7~a5a9ocZ`rz>~7(mG`Ai7 zk#kNbV6+s++KPY%L`Upz!*qhV&OQDL9q(Ww;sIZl|o-8*=v-rMLN=Bu- z(BO0m*qVg~B8Ls6_dbVqwo3i@RDHv*z)YD!L1^2XM7KiBk{m9#_P*v+deVv&?|VQqO?DCgs*xwX*T z_X3Kvx}eC8XsYwR--|5;OUhGJd?jmnN;ph00u}&+q$Hx<4un+)%I_YSC*9#$M zt8a-oZ0PI?^us+Z-M;ojw-GE+o5FK0Ipoka`=d9Rb7_w0iZzo2f%c_D*&dKYZ*%YMbp#g`K>g{fm6_)`xtDJB{sC} z;ygUrH-T+xDA=L-l*oJ$XSv*`Y16Yi$i# z)+TIcd?R#H#lIFlsrj>0i-ghPtMV{#bHDbc6(M7bMO?NO5X?v)E}#Kf93_UgzlV*t zeWNxsqKfsX_$e57b&2O$u#R~cdP4@IkorPG4nHc=)ulKL)Z^3mcQDWTrTg!_CI%3h z)zRI{LyptXI2TI0tzSI52{g|2;1;5RnCXhFYtF@;sxuUpV?+hwI^Gwu?Gu9 zeySl~K!=8J-azw_czN%dDmqC}Y@Oyi(Vy^h2J{H$9W;ioyWc(FjI(`ka2sw^LS&36 zcutOsl9suHcm^Q$JHT(wB+C1Nk}g2U;_oV3jfAt0z;%PZU(8btf!6 zOT;=j@b)+2<^&_!fK2o}4+Yq$DDYA-?r(fv*JX}j`sQWu{!twuxzy`iFFl$7URv1! zocm|?QKP_4ih|9;wwx&00~Xof>b#KT7ga)+m#vcbRh|+h1H(jgXOsq|K$4055oL@U)^MB7&YRMh*AA^R%Ox z8BeJZcbVgJ=>Ndf%>ky)z<4%MR!Yy;o%!)%ecgAC!{n$H%iZhzb+yg(ubG+)NfTR1 zAqFnOU&Wfmk3(TSHKs%engvLv<=6Kx)9iyYXJ0KNn=QMI-<2y{TlEili(=}S!g7AT zdA0wTi13)ZuQyD@-O=D%kaNl%R`B|Tp<$ZOpRd(ld=)o7SEUQFE6xYJEiay(8gtTq z(a#|dSJ2bJ7&$#mSMD(L@2)$sP@rUzR0(XP%9q_OR*|I=w+g7O{nq1t8#*ob;;Aks z7nc=dkNSoKky;AT#!{8X)aP_Igj=s@`WZ?!A_^ACZT?PLM0z8%%KjyhIEB>8vJXJy zDD0Y^^HWwH&V}N!P|0^P=Wb*G5ro#S5s@RkFq`WZHP`!*U39t zx76P30`c2gCq)cyPMSYCVQr|5$W)I_s6-WJNs#zsI4deHjYvKZp}hQ1sbhY1v4`{_ z5OV7g$JWkgOVOHIs;=FM`S96*5CKHp;TVeuqn9P|nBzhHn7sg%3!u0J&tn@)QKzKI zzEb(iFq{&`k!+Ak@Oyxtcm0d^rE>^!lg$PHIs4}qQO@l=BsbD1ZNpbj%&llsK1uk9 zNpGt#CI~|lnDZ1bECh5PthMPaU5GcIrPLV(@xK#E)CyS2AzD6@cm%~_V0|^1-I5`) z3E4cf+`V(}b*xhb2-FO`*B`T5Nl(>rfZ?8m6UyXIIVU#X%OMR} z7kiTmow(WL{$>#puys%Jm*Q@G_+PSpR7LG0GcR`I=?dD>9SsVg6(iMZ}k zCwiP^dqP^Dg~`t+UD%TJ&<4RO5WVG$J=p?q1%30Ln}vu&UZ`h$wzg2YJN1f+}Su1*KVS}r4_}|$-egwHJ2)SS9WQ+i=A|rnao_M8JA#q&e)6-d&*er2)Zy}=~ zD!zFz_T)Vhjh7gaTwJo{Gf@hd^MU(CQx!|DGj}%$Uu!#4iZqrle^tDn^TD|{HZ)LV z5U}=d@!dOy<+VWY@~Je3lr_Of?S#Qx=Pvhmx%>;O*g#m}r1n1b2R0R{5v;MWp~fDc zwCA7vS%`Tm#IXzW**2lXivlFL4kWBEi{$5D`OdOv)w9JJD1{lA7oLc7Ml0zx!}>J= znPh3G5{OineT${v(V+$Dg5nsyCfA@liYL%T`^z@t29e%{XJ_x(J|@RqVDwv@m3~Iv zs+7}kysBj6;-c$2WFIcPG}+=A)4LDdYsL?{S1xYeqvXh#AMjtEcwe#53u5;VS^TDi z2;-YpK1=Bz0}~?luRT2zeSPvV%mZN;hG@6o)!LhJ z%*N6i*Es5!$HQ8<+o9L|oy?R6n5_hDxc8D#r$d}}B=1WZ0Wz>&lL383XHqmr64xDF z*qfQEHT*)<@{iQGFxcr>`be#`yr6n&0@C$Y6xFPu?fe~-hE;(yr;=xDRvunPk4}T* zL^xSKu{>LDasr{WIcqdlw*J};u`II>Wq=@Jc|B8}Knv6QS80Gao&at%WFUy)wB2F8 zv1aOG?&k7lsb5u_n;`R7zr6NX2>rBV?lgQ0(Tkbzg&#@Gb9DMbKWmkUDe`acQzUI& zX+hi`g#2l?)SAl`Ffjd`L4C&1!6sLHe)}t1kiz7BF~Y{M@_yMy%V=_9+MUter&Ncs zzP^8@3%a80x%%@NGwm0d!FaRIYuF=RY`^sc)+`n&^A6|q(;ds2iTjpK##S-bs{WD; zzwh(jRq_&zd&LA#lUe#XU^ESsM7m^XcL|eVSsY9q`8_)Eh3d8b64>N)VL^S5l`4Gx0$haA(D@u8 zU){85p-r&DPf9CnZz&~)j2>2GZ2+t=U*#7ks~Z6kHzaiT)9Q>wHvaiUX9H4KCw|TA zAu)@ueSt#?4j6Y|Ebi5mZSLRUZXv|;I|NeCnN-W2^gDKC4xqeD8fXhDOI)n`_jwt7 z7|TD;Du@IUMr)48SW0y-vPjq2}K9)_e^jbgPs2yJs~|!@T~TO10cSQ+XIX zC@Ioq!U=)f4=;cOq*ZD~V!kQ=aN`)FWfhlU`Qx>e(lebd4IPo;H+@sTnpKOLvk3nL zrTQ(XsP~xfo7gtJT}0P5AR!hC91YQCK0uk=;nFCLifS8`NhDFB6Z^NTykTv>Jc%qq zH6PgC{Tf2t(5Hju`yI8WS-Xy{EKDBQxdc_&7wclgSffmZm=Ev}CAq`O^nwgB$q`aE zz4(O^cr$@FAbR|xv_d<8U}s!O#n46)hTbBOf>4~EZ;cpaF)lp-vnE--RSvG?$HH&s z`#ctB_%ePx3Qy3a2@z7k#~-=P;f9cZn*lwOeD#Sq|5`=(`KM$8S|ikxIt{t}prj=A z|2E2uK{fA04K;oR6#P-@)i(|!ck5{R{SoaV0@`d;|A3N%Vp9fLoU1#0a9%V zyoaGMa@;(}o79#Eh^tSht0R?NP!ilxCU1019N6QG5v0aYml?U|8=a{h0qG^JWpqIc za;TF*tM|iZ{&?tG{qu(PQ zaztoosASfM?xj<4?7oFA&fjS}x24QzkacQTKiq9)(IYB_rt0m*#V9kp&Q+-xoHX5q ztuT>~xVX69!-VnK$Pw%7>l$I=w3#~HWNPBKm$pOGu6%5;$(w$Qms|FVy}xtE>=8NV zko_zSjlXw)mAR96{sM_!K&RsLy}utF>O1H+B0md(K-47;PxMMGv`GqA80Uc?-QTFqw^zwetW1vq~Y8Inf8 z&LVRkqq-9tSt>s02I8laU2H!cxhFZ*W=I-G|H?-7%22w&Ey#uZ`X~dHeDTQ&N;?xB zjm=W|-;Q7~7;_fU;`@hWfsFVF_^06^ws}qp3JQKY?M4?7Gh{3v{`Hg;mPXOpF$@3+ zdSQIJiEQ}L*dn726RcNNfQk{4X!48j+=TZ%44Ui*n9p|VyT0_8tas|9FG8Kx$$^MX7;WnIfT-$Ar1+e}d z6@8ucJp#^iqc1h@B|d}i0iu*)%s{_YNkgRVi(Wq@5Gfa8Ig+V@oms^M*uhPU^H4zG zD|QZVBeKjP(Bh3LH8b1#)rYjsHg_V?{wBi47g;%VTS`DzYQfvELTc#SU=p+*2`Ptdj zc7Wnu9wzydEW;)Iya#(^J^lPw!i8`=o#asJAZ9BB(8RgLC(#)UN_t+^mmMYbJlgI* zM89K~j_K5N%iBFYO|P8r_PE?hwZ7Hx5hN?b(nMMX(q^ht^up>N7;|oKNw4u!L_e7{ zlYR0aR>Ly@F!;G$kju3;{Fv|4IZOFV(wdSFh6`=xkD_QX^jwY!aSj`*ARmR*$Ejxn zWpv6*rXh)cR36aGJ75duz?U(%13>4d9x*N=6Qe$VMQh{PHlp+UXTDsXZ*8p* ziI}P4BbrB&$n3LzfwX#!+|kuW#@YJj)}!|xs18QH=I4DZyEtN@@{jMuk)ozBljxxH zJwk(Cdtq)0_aegl|Mq`Qt5{&&c{h=WgI-CF=tUt}`F=h0%>09VOrd3y-G&_nhIZzuG|l$@}I7A>4ZS<3M8iq zm8&mCiAVO@d@gV`vHk}w{$FbUFH?>VPYhaqu@rQ0Q&te04cKM$`)4i9@0ubIlYk|M z>st|a;Y)~{Ymb?lmsdg^WM_0=oo2kgDL`P$?$Zu3A8@<=lcF+-9d&c`3?<=F>C34J zi$u+zEjB?uOMwO8gB3@aiFi=2Y9Ur*K~6X4QP@~*M5di0HqbYyZ{&o!NiZPQbKey! zdUvJ75Hd*c4G{VNdz$~vLI6`SOrVI#9N1;l*RI+HxdL^!!N7s)fTTb1H?BENqVKhN z)OwBq8q&chg?`oNmL~f9m)+94H-`&)WqI=0EN2}BE2m)iy`;)i*svEyWZFD;W z+5KOoB-LmLkVpZ#`x<87@YEp5MJBtFCp(q4R2(w@!gmGwEzDkdN%2z1p@1#2fbn_w z@PG0JN-RLWfKm!d+O*J}SK@U5tg)i?oghAIs)!&#!3%hHC9*jc4D~XE@BdO+0))7P z5oE-WWGn5zvLnR~tf;8y>FGhTRaI5_{_|UZ-B3dz!2dp;+wLvW$o?*NF*V*MV853E zVAAz!Qrp-X`G1Q`GR@>+_uYAVTCnY9FMngkmmAH&lNqR<4FV%CiB6+Z)$U)`Z*ro14 zEIxALW@ANfoWD5(jQ`{e)HExBlmXSW!=s~>gVW^^6>}BKn-?{CC1%25R~ClQl3;F-A8d7@sEz_8VjXu@9dL^7Fp%dB6N2 z1<@y2M#ZIBq$|&+{3qR(Ajn@~mvaXoJ?29IEGS^>v|Z{t^|>TLgG=T{4F-3k{mGN+ zNTs-L&XkA?LZTHVjz`Q)a|W*NsZH56ot?+S)^=!qDErzX8YNZwV1o($IB+4>s}fk zp7TR_I#gORDlpjoHZ)63Zmp04@2eAOcnznOZ@+s=iz9WC+cQCF1#8`3@ixX!XCB_U z!w>jqkeC2aue~2F&oisgM+zAdWa77mzrv9Pt<@i69C84?{;Dj1MGK_vGh-owXYLQ- zV_mpXQt}$(@`4-yR*WYYJwER#+h@HxOhUA*a{|v#KJ_L&^;wjBpa_Cs3(M*BM;{lz zdA4{sr!pMxE*uSKiFHSAD%%BHrrpvudIPx1kBnB5*`=yhJ&&MbJ}_=BD^kj)^KZd9AabmV2i&ENO^~T+ zC&pdd64g%+dG-EXgvs$SQL#qhT!pdqNEwth;KM_jwxq#EkQA({nyz7bn0B&f%mogB z0I>p9tgX1o0`U5q1yH(|ty04KvRpr*))t`LHB5=gadDZS)crrEQu4PW5auuhG{738 ztPE$`akjSW>dJbdMMy5qNkpy;pD7>R$}!eUyeGD^8TNnj0S+8c$rQ3ZjjsH4Rg{q8 zN1EB{)-2&5+Py_ZsTrr`GuPJ_%08wa&|X?C9>u<5A_v61=n(3OyDoEL)DmiK;AT0Tl!9FR4?8C-Y2Wzpw&8O&;aTGqs@+PH`gh2F7h zOM0lr89$p1_Yp^fW5KKd+(H>_Puiq5BWrkxTy)eOj0@?gwHj+fwO}sm@uHse^)Y2y zkWJR9wf6m*Msx|WL}vTPW`@Vwim#+thN|LUK0id%nj87PFX`!!yEv%f(ze#f36RW+ zW8>#H1+aZ8Z*iNK=W#y;4b)(xv`Q0cWIp&PD+q;5@7>?i9%$S^-npqn0%dGnM8|=Y zWL3en2NN7W3H{Z+5x=ug#2HHOnIPewL+{sG_nEM;Y*Xgwk2W#6*~W%xpR129M^@zSnZfw> z>QZnkdDF`SW#NPuR4xixsUR~WTl^;;sJjS+t!MdJ`gufdjBOXFE1IVS$JwLVABmC~ zS0#o8U^_s!=(awZE7MclSfHTfrx6%dgIUi3bOg{OszN!n-GW?U@hY^? zVBGaqKzmOlJ3CWSlJn$d*Q?eB1YE*@dw48pmg|rA^t>D-DALn4Pbn^;;0~&)Ff+p; zgAGsGpY6;Gg1kL?c&~?q=^%^HMpVKU4hyJad6ORU?vt>fAXX={L%3+)wvs@^ozM-iWYH+sW>a~#ttg>h#{sSXqbc9U_A z-ves=@1ojyFmLKj(4ZrXH*cWBvz2bDRy4YXZ+NWI;ciN$15{>^SYyQqnC4epA zKjk)mKeM>50;sb5LN=v&B~%PYu%vV$MOc2=yUvd_9ylOw)^P)H8j^2)8K6{u93t+w>tKRN%4aLxf}QyiEL&^mz`4ypxlaZ_268x#_H0Xd$= zYyHCK9{$zo@iwMl3ea0|H7rk`I)hX!Pz(v)?2MtO7SHFqc^MRQf<&HAfzdQ^R8#=- zs+#~QQ#q?Ppl)rv*s!t}pa@6%j=k5oyZOkS`2qWRLNtVF>y06GN8z@SzF8HNH{bp_ zF$=kSy#nD?1}f?NxD@ao-hh3-^!)R?md_Tq$;GyNsdSAC6MYA;9%|_*6oO5aX-*;X zv$ORbP#^}ZL}RJNqOSFmz5%5|^)*Veq=sr?)83!J27)Tv{bPNZYpBpriEaZS$;!`X z@{a5&p`p|@Qng!)i}mhRQWWC<_zP$V!&es%Z6BEt)w*qm)>O48Z8S#4&d>toB42mj zmxNU^E7MXHj30etx;(6CM4wdP0w%%Cv~y>s<`=L;pG!fiQhfZfGDU%4#RQYJPTAXv ziRXOY7w>!GzywDbL~UVr)tXF;Q+X`E2yz)&b8~-+j7W6|1XhEFGrKPD(_azY@PnyG zW0f#-rP1q7^crU)Cz3%yD|?3M_I!b=2*~y^LH>Y!{B1-rCGbkJ-Fu(Wf=)zacv$6C z3I5+PdnSOc91?Vrt>U2Ltp&LtMS$0ve%Lu7E90)#7R|c+OQzLg390grL!&o*8W~P9 zNt`mSWz0~+``>aI^MKb>+>ZLv+$x^NrJQUw2l!&iVKuU#UZz%d9}b6Gxw#9fI*pIp zZml=4F`6ZrSjX!s-mSHn_G3Mms-T*f5aFTvdwE8M%j2w{MN@aG;0QW($ys5P@q#L= z*oPQ3L>s9$rK>lchShY<%@IQ&I-q*VDo#|i*z;uPMd)&=Mv+ELWH_L4zw6Q!S{HIB zC!IL|vFVOl0NI)4BKr9gFM$vi&THjc_+#NOjMh6`a_G&Zrqvlm<2=!!r{KM{&s(5b za#K08ECDKK_BfVHOI*EsoEq|-~~43TSH?P7&1sU0mnN_&60AMYcHfZDcGAsRB?XO<> zMdhOF@{gjqsZ_jCIDab^vEllz-AU~{t5tRdZ0{!StC7Lm0d}WBgidl3UKof)Dud~I z;rpzZ0jK@qksb=qpJcH4QlUxd-)JMhfRKnNP?9dX`@lDhrO^X^e_g@M#3bG-_um%g zp!DSu4+kBsvEp4;dw3b8o=9U59ArLlE7qu~YClv}`tUL{4*C=X5^%*4d@dT6W>n+I z_$TY2OP41}0r5`Nr@60e=+Xb^rhX literal 0 HcmV?d00001 diff --git a/Structural/Decorator/uml/uml.svg b/Structural/Decorator/uml/uml.svg new file mode 100644 index 0000000..6dc608a --- /dev/null +++ b/Structural/Decorator/uml/uml.svg @@ -0,0 +1 @@ +RendererInterfacerenderData()Decoratorprotected $wrapped : RendererInterface__construct(RendererInterface $wrappable)RenderInJsonrenderData()RenderInXmlrenderData()Webserviceprotected $data__construct($data)renderData() \ No newline at end of file diff --git a/Structural/Decorator/uml/uml.txt b/Structural/Decorator/uml/uml.txt new file mode 100644 index 0000000..f0332ec --- /dev/null +++ b/Structural/Decorator/uml/uml.txt @@ -0,0 +1,29 @@ +@startuml +interface RendererInterface { + +renderData() +} + +abstract class Decorator { + # protected $wrapped : RendererInterface + +__construct(RendererInterface $wrappable) +} + +class RenderInJson { + +renderData() +} + +class RenderInXml { + +renderData() +} + +class Webservice { + protected $data + +__construct($data) + +renderData() +} + +Decorator <|.. RenderInJson +Decorator <|.. RenderInXml +RendererInterface <|.. Decorator +RendererInterface <|.. Webservice +@enduml \ No newline at end of file