From 1dabe3c6edc2d0ff45aa26b797f32ed2c7d2bd53 Mon Sep 17 00:00:00 2001 From: John Webb Date: Thu, 31 Jul 2014 14:47:55 -0500 Subject: [PATCH] Added Behavioral pattern UMLs --- .../uml/ChainOfResponsibilities.uml | 36 + .../ChainOfResponsibilities/uml/uml.png | Bin 0 -> 10706 bytes .../ChainOfResponsibilities/uml/uml.svg | 363 +++++++++ Behavioral/Command/uml/Command.uml | 28 + Behavioral/Command/uml/uml.png | Bin 0 -> 10203 bytes Behavioral/Command/uml/uml.svg | 366 +++++++++ Behavioral/Iterator/uml/Iterator.uml | 28 + Behavioral/Iterator/uml/uml.png | Bin 0 -> 15043 bytes Behavioral/Iterator/uml/uml.svg | 638 +++++++++++++++ Behavioral/Mediator/uml/Mediator.uml | 46 ++ Behavioral/Mediator/uml/uml.png | Bin 0 -> 20731 bytes Behavioral/Mediator/uml/uml.svg | 651 +++++++++++++++ Behavioral/Memento/uml/Momento.uml | 22 + Behavioral/Memento/uml/uml.png | Bin 0 -> 8364 bytes Behavioral/Memento/uml/uml.svg | 310 +++++++ Behavioral/NullObject/uml/NullObject.uml | 36 + Behavioral/NullObject/uml/uml.png | Bin 0 -> 8701 bytes Behavioral/NullObject/uml/uml.svg | 304 +++++++ Behavioral/Observer/uml/Observer.uml | 27 + Behavioral/Observer/uml/uml.png | Bin 0 -> 9977 bytes Behavioral/Observer/uml/uml.svg | 310 +++++++ .../Specification/uml/Specification.uml | 55 ++ Behavioral/Specification/uml/uml.png | Bin 0 -> 25534 bytes Behavioral/Specification/uml/uml.svg | 761 ++++++++++++++++++ Behavioral/State/uml/State.uml | 37 + Behavioral/State/uml/uml.png | Bin 0 -> 12470 bytes Behavioral/State/uml/uml.svg | 460 +++++++++++ Behavioral/Strategy/uml/Strategy.uml | 36 + Behavioral/Strategy/uml/uml.png | Bin 0 -> 10852 bytes Behavioral/Strategy/uml/uml.svg | 314 ++++++++ .../TemplateMethod/uml/TemplateMethod.uml | 35 + Behavioral/TemplateMethod/uml/uml.png | Bin 0 -> 8688 bytes Behavioral/TemplateMethod/uml/uml.svg | 256 ++++++ Behavioral/Visitor/uml/Visitor.uml | 41 + Behavioral/Visitor/uml/uml.png | Bin 0 -> 11641 bytes Behavioral/Visitor/uml/uml.svg | 441 ++++++++++ Creational/Singleton/README.md | 4 - 37 files changed, 5601 insertions(+), 4 deletions(-) create mode 100644 Behavioral/ChainOfResponsibilities/uml/ChainOfResponsibilities.uml create mode 100644 Behavioral/ChainOfResponsibilities/uml/uml.png create mode 100644 Behavioral/ChainOfResponsibilities/uml/uml.svg create mode 100644 Behavioral/Command/uml/Command.uml create mode 100644 Behavioral/Command/uml/uml.png create mode 100644 Behavioral/Command/uml/uml.svg create mode 100644 Behavioral/Iterator/uml/Iterator.uml create mode 100644 Behavioral/Iterator/uml/uml.png create mode 100644 Behavioral/Iterator/uml/uml.svg create mode 100644 Behavioral/Mediator/uml/Mediator.uml create mode 100644 Behavioral/Mediator/uml/uml.png create mode 100644 Behavioral/Mediator/uml/uml.svg create mode 100644 Behavioral/Memento/uml/Momento.uml create mode 100644 Behavioral/Memento/uml/uml.png create mode 100644 Behavioral/Memento/uml/uml.svg create mode 100644 Behavioral/NullObject/uml/NullObject.uml create mode 100644 Behavioral/NullObject/uml/uml.png create mode 100644 Behavioral/NullObject/uml/uml.svg create mode 100644 Behavioral/Observer/uml/Observer.uml create mode 100644 Behavioral/Observer/uml/uml.png create mode 100644 Behavioral/Observer/uml/uml.svg create mode 100644 Behavioral/Specification/uml/Specification.uml create mode 100644 Behavioral/Specification/uml/uml.png create mode 100644 Behavioral/Specification/uml/uml.svg create mode 100644 Behavioral/State/uml/State.uml create mode 100644 Behavioral/State/uml/uml.png create mode 100644 Behavioral/State/uml/uml.svg create mode 100644 Behavioral/Strategy/uml/Strategy.uml create mode 100644 Behavioral/Strategy/uml/uml.png create mode 100644 Behavioral/Strategy/uml/uml.svg create mode 100644 Behavioral/TemplateMethod/uml/TemplateMethod.uml create mode 100644 Behavioral/TemplateMethod/uml/uml.png create mode 100644 Behavioral/TemplateMethod/uml/uml.svg create mode 100644 Behavioral/Visitor/uml/Visitor.uml create mode 100644 Behavioral/Visitor/uml/uml.png create mode 100644 Behavioral/Visitor/uml/uml.svg diff --git a/Behavioral/ChainOfResponsibilities/uml/ChainOfResponsibilities.uml b/Behavioral/ChainOfResponsibilities/uml/ChainOfResponsibilities.uml new file mode 100644 index 0000000..3b79650 --- /dev/null +++ b/Behavioral/ChainOfResponsibilities/uml/ChainOfResponsibilities.uml @@ -0,0 +1,36 @@ + + + PHP + \DesignPatterns\Behavioral\ChainOfResponsibilities\Handler + + \DesignPatterns\Behavioral\ChainOfResponsibilities\Handler + \DesignPatterns\Behavioral\ChainOfResponsibilities\Responsible\SlowStorage + \DesignPatterns\Behavioral\ChainOfResponsibilities\Responsible\FastStorage + \DesignPatterns\Behavioral\ChainOfResponsibilities\Request + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/ChainOfResponsibilities/uml/uml.png b/Behavioral/ChainOfResponsibilities/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..de55fd27c575022b7c7fc68b91ee14f235e86f60 GIT binary patch literal 10706 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 ujjf>n?OG#{0sP~p + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + successor + + + + + + + + + + + + append(handler) + + + + + + + + + handle(req) + + + + + + + + + processing(req) + + + + + + + + + + + + + Handler + + + Handler + + + + + + + + + + + + + + + + + + + data + + + + + + + + + + + + __construct(data) + + + + + + + + + + + + processing(req) + + + + + + + + + + + + + FastStorage + + + FastStorage + + + + + + + + + + + + + + + + + + + data + + + + + + + + + + + + __construct(data) + + + + + + + + + + + + processing(req) + + + + + + + + + + + + + SlowStorage + + + SlowStorage + + + + + + + + + + + + + + + + Request + + + Request + + + + + + + + + + + diff --git a/Behavioral/Command/uml/Command.uml b/Behavioral/Command/uml/Command.uml new file mode 100644 index 0000000..368d5f0 --- /dev/null +++ b/Behavioral/Command/uml/Command.uml @@ -0,0 +1,28 @@ + + + PHP + \DesignPatterns\Behavioral\Command\HelloCommand + + \DesignPatterns\Behavioral\Command\Invoker + \DesignPatterns\Behavioral\Command\HelloCommand + \DesignPatterns\Behavioral\Command\Receiver + \DesignPatterns\Behavioral\Command\CommandInterface + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/Command/uml/uml.png b/Behavioral/Command/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..d0217502e870d86ce6ecc6e3fdedd105ea2854f3 GIT binary patch literal 10203 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 T#Srjl4^B! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + command + + + + + + + + + + + + setCommand(cmd) + + + + + + + + + run() + + + + + + + + + + + + + Invoker + + + Invoker + + + + + + + + + + + + + + + + + + + output + + + + + + + + + + + + __construct(console) + + + + + + + + + + + + execute() + + + + + + + + + + + + + HelloCommand + + + HelloCommand + + + + + + + + + + + + + + + + + + execute() + + + + + + + + + + + + + CommandInterface + + + CommandInterface + + + + + + + + + + + + + + + + + + write(str) + + + + + + + + + + + + + Receiver + + + Receiver + + + + + + + + + diff --git a/Behavioral/Iterator/uml/Iterator.uml b/Behavioral/Iterator/uml/Iterator.uml new file mode 100644 index 0000000..752fc1b --- /dev/null +++ b/Behavioral/Iterator/uml/Iterator.uml @@ -0,0 +1,28 @@ + + + PHP + \DesignPatterns\Behavioral\Iterator\Book + + \DesignPatterns\Behavioral\Iterator\BookListReverseIterator + \DesignPatterns\Behavioral\Iterator\BookList + \DesignPatterns\Behavioral\Iterator\BookListIterator + \DesignPatterns\Behavioral\Iterator\Book + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/Iterator/uml/uml.png b/Behavioral/Iterator/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..60226301ac156ba85dbf3376a303dbf6c79901d0 GIT binary patch literal 15043 zcmb_@XE>bS)^|b>UGzk65hHpKozX`y7(GIC(V}+}HA+G-I?;_Dz4K2Ho#;`9=$$A- z^yeP=pYxpazUO(~FYgD}T;tyN-fQo*_A0;MnsBI^A|c)byj!+fX zZt$Dz`@^o7i$rFkFJH^vg%sw@b?(pUr>zV|ae91fIGinZwxSQS@aGjD@+&TCIvbnV zaMjf<$Nr~DmQQ^Vi z)H?SmIS{{GOg@%whJf>M+ClBiSQP$5k1MrXpa@qpJqx|u%&$Xl)}@kw2)*q&&Tug~^D0ddO-)$l^!rw`2tv*bOYzVUKXH3aRD0YHXnI?Ab{7mr|~E!%U7>Jk@2 z*N2-{!Y{5D^JQZnHL=QCeVM4(?>;*E_@0g~om$8DU#8!9J(Yr@QJgZ(X#cM#|{1By}cX1A3d~kVW8Ne&&ZIpvy8JpZ2WL^ zYQWTGnrHek5aK#br=U$t4N@@@dUCiw6oIi`Eysk0y^q?f>7yTId|RxA{i9)%TMhXGIDGbJuLEqa zf0=I%KbyBn&$4e}k?_kp;>agvNQk7K97y{8nEw~53u!v)m)cK8HQCKN2}&HEu;v!nP}VFZtaq#Bv6-xcbal4 z#!iPD(Q{mi%AcKg<=4cCQSmtFi4_Id*$u?ue@o4Z$@QrvffTS@~$>Lc?b*%>ZIhh_B{YaP1@38A5(I+!3WEi+3Y z6bYvhXtg%$3o*}6f-kKfMzFS@dCp)9hZ?!FGC%d z%5dp0ydj@vzp>W}2{vd(EjSN@7 zNMfQqM&&bU-5;ag{M)Egn(el-eqSbDJ0DC=W}NM~g|TV?!gMjs3vAcUI2cx2Yskt5 z<#x{(6@ipLw)t~7zw`1mGc!|F9XKJcI{s$LCnC3d?&juppyAE6s$3G8GBxHZlIj(& zXK!EX%_LBers|%o>q?uN7o(?an43vj=&p#&EW*KsD=^GBKXMxCy!KuXDrWabov;VE zsIt-=Xpq)LsXZ~(E7Z@;1UI!a8;;|LK!V!bj!LFbNBz6HSD(*EJ{>>5Sjy1#uiGk& zjQ#QEC7bofK)fBINIPvFauDj@-M9r`sCFoDM=ogpxZA?^&%K|OWI{e+{uy5L@5A%3 z|J{urnf|-ifA>Tn7+eq6B9+s|0ih!k5RIfm+{4~PAr?nU!4R3s5 zh<1d_`Sad^Md*@F(}C0xv@O>khVnh0U-o3tNJY+HbUJ;s>+TvV@aX3D7q|n2gu94k z@12~J^7GM#^hqgk_d_c(BIWGuSc2W0iKFArrG2ZBhcmH@Uc*IjoQH8ZjkcSs+G7_V zzzA4otZ@@(hP9J4Tav8@m+iTo^HvRUm*YhjpOzIpa{uRG>wK&G_X~8iIB~WLc+M8l z315_9J6C*w4dOy9BX?aNa5Vi@nER^V11Bn+s~cPoSKN1*DZ5QQV((=NuJ{axXA#pVdk2k5pv% z7{4I5Y3BRAP8&jBJjI;3*nGTZHDP>R$EQtmp3riAL9e)IWi@d=Q0RNzdcLwpMn*QZ z3LAO+(ZFH$5@#vJa>77@tsGP=Heyr)*l3Db=rEf04A(3T&bnRS1 z-CBmNi-{vg^I!h}kn#o(M2J|P*_Es$>rB({nK&v*I$o94b4NTq zXne%x1Kh(>nD6_074hK1=;;`SzQQlEV#Rq)#2G9; znezFFq$sFk!3oexd8j1%;DNc}RSLrzEz_^iJJ75mDooI5*m)nMpX>U+#kdc48v7j3!uD!E)&HOLj*(9;TB7KRpXVDJ?rX!h&;mtGY<1$Wm zL&)9j_D)NP_gLSlbpD4sp0$uyRM7nv_mj$1^$dN~j^W7*pEXHz!ofI&w^{he@7HdM zm)aOj^RU&u(zx7DN&S$$q+|wO%LmB_MU7C%+|J;GtI9?W{m?e-k*eLe@L;o-k#JKB z0rpLaGrkw4vC~+vN~7}y38Zd@A!=s@IXTzbmE~B2tW@Fuoz9z>0o+A4gu7KsuIatJ zU%J{PP~59&#l4NI->}K+*6RHkVUH`L8Mau$(?{XNdp)(5PF;gdA&(9c=P7Q(zfaSF zHNqmS<-1~C!hHNQ^!7IjEf}O4F4oA5M#FR<%u>`CpiWNQ9U?dvj3he`?x#$mO^09v zvP&SWNwM`l$9<5g7N^)H&&2i-g}1x9GPK5`+JQ&e2VgyoL#ixs~<$4>xqv&i;(y(k)20D2g>S13=zTU zt;ljHZo$Fjbk0#{Ub3B5a-I$d>XtNn5ipyV$zSU=P%#^ug?QFrYE%O_WDXaKdp!NJ z1K~j&FokJx4wk=Pl!6HYWcl_pNioL0ZJ|7+@olgIiK&6XQ#M>Cg_h}wiwBX@(tstb zPBQ`T5tu6zy5H$N4ubSk%+K*yJ?yR}?V58jkercg`9f099=UFbkWdv$*D$bFhZ z-9nj3`d3Z3Ml_(mL_i3HT^1>e0xGORzo^h<4PZ6U+n~FM{_|<%PI}@ug|d#W za!Em^M*jWvtsL3dZsO24kbMZaNp=MnZr0@Cf4OXS?P>q&7%A+~5}*&n%>6B`E_153 z`xu~Vu{$v5mg5Sf*wyh-$F`V2-JH)TlXARKY*w~E(`f0zN&%^tCl(Ly$h~29P8?wT zkb9y8hP(z#_`u2XuubW`L(SRYQ&jl=R2}#1Sq~ff@_rw+*@`Zw+njed? zLwO?5uyyHhU@v^XVoKP!B`^Kc{Q&F36v6yK1_?X+ZtkAfD;0c(E3MU&E=`{Y%jpL@ zA{rL&qs*Uv>@ks?HV2o&%43ZuFRZ^s#Pqk`dk42wwHu;+DpEP^eZq?npD_%X2%ID7}oYT<#;%j5PFtC@_oxyt5Vs=+!Fd=4~-z|_9Y%3G1z z9{zB=QV{-}K@JwYSY6z8>%Fd=K=e9=fsnuVg;Q7P`Zc}OqGam$ePL~-#M%3FBLb3U zqHGl773^d(&WsC0js+H*!McJ6_>XL~?=7(wo~1-UlYMBF%T40>1br*jdj$MmnbIT* z{yEdc1)dx>kh)s~0XDV$t6k6K4*?U%Ww<3)hk?ez6FJT&zun8yp*>u!Eduf!aADYm3jJ3* zR%kd_+1dk3CXb!0RFh8V*A>nh9$jkQg^_-$ud9J=b>>0m@W;JD^??^pefAeLT0q86 z&t-gPE12$=(bDZBW)(sl*1xl4^co+US;GzAo0T_UI`J^VVsWsaYkiOm>K=?8)hZ-G zeBZ?jfqc+{AA6-_ONV4cu&i7Jogl^ioR2TYI$3ap%U`h3Fo^HJGn3`--)@^PcTS}+ zKyvE{&!T*~2AbOZ?Y#dQbBnGeg=;)6cc>q)`#ex+{;K)JBr!k)ht#{?r)`0!E!Gh8 zOMl^wCjEERRO^VJS!j-FaCBW~3(;DU)kY(eId0d!>VpG(pWNqN!_1C8^I?X{&rET+_TVKiqahC5|}l zmL;#rwG2z5V)fXSrB=;38Z>U{1i+RZS2osqaHqHyWG$`W!NFwOM{|V z$`5g;GHD`v7&2@2^Zl7f84_9Ry82eaI7;$0s{5)udi(m~CuaGzNi?goBUn1mlPwE~ zS|NDg>gq}!-0ULEKRGWJlfz227z`IG^5!M{C6Iqh;Q$zgnmQJfH|Q?kMF`1F@Vf(h zgNFe+H0GI~^Rls9hWK7=YLR7gl0~;lin4}ZnA}B>?@Ivi21o@#JJWKw#m;cvWvf-S z*Xp!&*~dH;6K(uS^kLKQ0TO5y5ME=qYNB`M_Uj7RE$5RPP;;q&a$~lm%alQS?oX2M z+sF(I;#D-UcesaQW~#p*ghD(N*CyG&SD7oFn0t*EMXip{<$`FIJoqU!nBIUo4tX3)kf?A{sE8D+s&iM)vFn}( z&pP1DfnX<-zhesWMeSqZEprRwp=2o(P93xKpRoj#x}NeKTYi}#k%T=2G^Z4_{2sR#`_;6Pfuu=;~zWpZIERT zQ=YxAZ?3LZN??t5PsCk9bWBzXKC&V(;!MiXT{`&CX6qO|mqiMH^d30Wuz&G3&!VFw z4o7gpyJ%^$%RhL*95^x34cc6`jI9Xo?BG?czf1eEGY?AB7Aog629gYSWw3+Crat+Ei8!PUhG2nSR*NZ)dHBd4+G*(^ zko}&{6E-6G>z^~TS0`7DG9LX$5~&b1w?z{N8z!~uEd zKfQ58@L};+=d{oYQB>5AY|S^2M>}fCq`F`G#2$VtU0t#(SbeP%T~$-WHOLd#;__R? zFF!XVK?3G2D%vV4dVy>httxL`=a^!<&uW<9P>-r#u49&`>yE{;liKI9KFIu7^d?0hA;TGCWm`*b{>wsd@tq)RSx?bn0iHqh!y z*N)-U+4`5gK}o6ek^6s&@}a7gr!T21^{}ELODkO@Ge)@z$<|pb#1z9zGj+bG?^mfq z;`_*{HOrwE#+wwk3%fRc;-v4q5y1*%j7>C3JjdfBvU=6fB5x(=FayJM!l3x)wa8(d zGWw}&)W^$D48A{64BH?7rDQckFal~jkNrn73naUXI%-X_K-yyP04gIL()%8`=rA{Q z4kLpQPb4Sfq!}LhYOMLJN!9|F0-YKe{6;&FgJ4KuNAIfqbC?>GqmvpnB{4nQta|q;)*_h!zEmzfr{3^9n5+xqYRbE6v;>(&w1DI`^Z`04L%=|4L7daxA z99&}OVRD+p6;pGc(~vkl7B{k#EzDczo-aL|6UI!FBbk_aw0qcbHy#7_IOHDZj95&K zZi$@)9|fD(YJ{@lUr%8|&~VGBvmejDXji3$0ZVB{sFiH%iKY~43*t&f_fmj{qclEo z!kPzV@v%T0A+$M?D(L4>BQ@xP$Xz%;Ec51dHM)89mn6_kq z94s(q>KuO}#3ST`y~FRoP76s)EzWhd*nT%_s-mWo%U14uQnbK@-~EO-NkyCxK=vx` zya5E^=XnWNit^U^l2hq@TCr_92AmQ^f$d&S#)+GThzy&KJKv^FmUQP;yiAFmoCR&2<5=_&s-oY7MA)fVY{!j?VHw1B!4b>9qluN?NK<=XH*qYJdYqntE zfbKP${N zdB>?0idcS)JGAKaf;;hR{N+F{*lcX8t#NmB?p@Rl#Urtm6Uoa%vW(ksKC~X^?5r_y zxlUqG?KXArg3CeYNjb5VS4c^ny0a%?z*OjDGxvg1 zEUc$A(lRJQlX~y^qX?Y$W)d>?LMyV9$Irb#!^e#g+gYSvs8JJgbvd^U{33hgOh>K( zr=oJaAc!KBooR-CSs8emN-e1(d$$W5KNo}Ms}C<@Ao=-b?)=VK*7Ttejmxz zynTbhNh|69`AlsnkQMutdxt=d;jwhVVF;eY&5Vrb8SMuGJIHX!2nGd>h!CFg2un4r zKkqGc^twNr?21ovwIq0@$k0ibl`?J&Yz~G29OOfwDqg&q1#}zHk$o@6f7e6bGv{VW zjGO8a?L4!RndIyhZw>?vCjj%l!5bg|J^;V^Zu-NYYznpkKnWVrXvmQ*#!?~58`vxc z=*yF;M;(YEb-B-qz)1lp6Eojt6(&ofxFoPY>(7j>X)J1}Tr#tLYWM)Zsj{#Z8We~w6IdkUH5jft7%oN&e z6o(qbJ$VI58qKVR@OzB>WH05l7H7!5pf{6EfQBAs@<-unp~L#aPNvvp3`(rn=8mR{ zaMUDcHSfK@b&D>`$v|Z@Epv+ZpR`ZXWNqWTzk&c+Qvu+q!1x$9(@yA>d8(sT!+aaA z7v6#RWVXQXIELQ5Tqe4Bzd7HO``|J68}#;11r9(phyj9jP*=S%BkVaM6H8+TseZ`D z2n@lKCM{yD0e zRTT(m=h0^ey!0D2%D8K-m)y)(k_!GaJ_boH%84d3F}Cu*>&pOhlbZ{N3<3lvA~TSc zd_e`h9I!876|^Z}fY2-`I-^Fv102>}#4n0l|M9_X3c#xVehrAzXz9>4#FUAFW>f); z3N0J(3D_5aJ^cOje_!kWoKpT7jj(+qar^UHkG;9F3~gyF1mhD&M74)&SqEAM&9x4g7F`RD2Xy2Y_tfoWUqG-j5 zCx#i!Bye}}HUTSQz@WdN8%>90K|OU{+yQ6beFE;$wO(v=N2ahk4`BfZf?!-GgeOeY zTD&;ER8*()S{vfIICET+YIEA}RR!R6MF9Qi`&=pXkJZxwQfOF<`1=`)LLGC8}?}RJ*}cC_j4N6 z0x(Ad1tvk%ziK+SX}tqf zvbZktIDwJxWka~%q`q}O|#_b#O$=r z6?7`{<>`Z8-5BtEwgG#0nvvGDtL4zbv(?(=y|x<3qUr02Po=U3=Uop++l~J}F`(0* zv-R_&vBJdl=&@myvUwFY%8^L==8Ki(F5zd|ljGOx9`gna+B-gnDqAtDZeb7E!x|mh zT8fG`kIS+O3x``tHRwxN8IP9X zvJ922uAZHFD+><>boYi*v?o+o>)e68?haacDQ(dTo%)}-ODE~h=Hbc7y{Oc`lnT~; zYH-`)Wj1P9-Jhyu`h~{28Ul*esy@Ms%jbe5~7BX5Yx&2Rkf}}xZB{|+%Q?#S#GqZ z5mG>0#0ycrQA;7Kb!L;+`3<8Q@)klBIxzpHHw~(9T1R2KSMRtQt$w*WU3Kk+{D=8I zG-KqHD2Sy-6vcKF?Jk(VGME$V{Og;4mXg_0S$#fRR~I}kt-i?vc8r%sy3x^-Md2Jf zz3dOYS>F2))T z+?J6~0>pk~P7b4sk zbqI>d5$5}_pg89Kp*IkE=y1dTz#1auzPy1bgFA;*3DqJ#KgNcw21k7Q-&jLn24Ysdi2n^8^NOg6z)*3R1`_=KzQE~1`p zEIuNR8I@gAO!TaWOY-rMye9VH2$rZS$S6z&@M0#?oirc^9KpQBT#Eh z<5mNBSb&(Ckx?yt$^oHsSazg{y+2cWHqrBC+Mvf6nRAlN>cm)07U5M5c2lJ{La&frM?OV8V*d53mBkCw{_-!!0rLP z2Ku{d5hbz)QK==fv{YOMtiq5>|Hi@B$}nRdpDnjUxp1Qw9HDW{mkP5#epqMZw&lr7 ztTkF*VsWdARW#-0Wo2cJzv&$tOES0BP!@7~t!-cG1=CDM4p-OH>eaDi(am%Cc+h_m z{oFX1uE^7~{Mykh$3HXyxk(|Rj-b@$QcoC7u}H1Nv!itoo48zg)TJBZrvX@197dtfbWtFa3pB4o1~JENG!sT6aDVq3^~imFrW=hqch27EybA=Zvd@OVbx8M_Z28D#N*<1bx}qY8=5o1l1g$AOcgy>fln3L=A8UjuBYT*fuS<)I zRK{n`^ZCx0K)sl?AXuTyM3n8Y{dT? zCEhBWsreAvvsj4DE}!)2HvAO4vVOUBon0QA3ldV2ueienJhX>98f?tEHquf#_Y&*H-h6#$wj~XimhZq3h|7;T3x+ z<9Spup%LJf-r_;SMPZa?KQ0In{rDiOXori{gH{?0cy;ZON6X=?->V37Pn+4C$iv~# zvTvQJN~VAiPT=~=(f#e|fs*jzU_-3@dg~*AU)ybVbzuvmxENZjkdDT4R&0>a=!~g# z$_?sY?WRjZlHlk>1;Td06HbbiAvjvc0MSnj;yE(DP7Ep%I_CDdZZP`Lq5f&lBic_Sb5R&0pU6Df?#D!&VZ^Qo zGcuYFVdf_%&BlQE8H3Z;{-(D%^B|J_ysV{Z@9bPQLFm}M^?I8~P@ew+=;rg;Rv8=q z&Ny>0c|pyKhW(>nsI0;=u@K}K6#h1H0~|uIeBu*7H~;e*4~EaxPWD|s>cj|+*oE2l zmJBGLOtynnSj3)5B0xN=BBg;asL#c)#8OOHRx%-rU5d^r4KcG<<%mJZz7#1h%ker# zq|Z+JIU3syGC!n2^T$)6ZT#GUW4lTYWGHOM7qtG24yTX!*MW?=4qI*@e6cT@cyFWi zV7ADSXRr16Sc1r}cqhRqmZ?t#M5$5PTom{QlIuwLlmjTUq!H`E^#$ikT1MCBBi|h7 zXHPxs6K^nf$>xH{J;0m=V6QcSg7znL_|v#(LYmm@;bBLFx;oeS@17N@PwOd?)taQI zBX1xgvRLf$0N#xY+<6!+?7&5{+8q%v6v8m;V^e+s-yzA2y<~ZWPVsNUm1Z9R&t3QW z=cd`--yCbk7Oiq~;#|&H#@3f4_^}<^ep=~7X z#`t(}-*ociAQMWB$7SXWvAy%kAK769PYZY1fLsRX=wL1?bwu3E(oOrDRM2(Z5vvcN zd19a%Y2+5krWz7dHyJw#RKMF$b`J2lh$Kdhx+>{B5_b8Fc4ML;`65ooJ1|OG(0?X6 z6R}|ch3X~7p&8az;t;X-OLsvn;)7(Yh;k!?8Bu_U2Qvw~67iVL9Q=KQkEXONd7ir`xl0dNx!2$!L=>mMbO^?%)4fk69uL`uSbu1k~@6 zWd}}?HFTI`A*})VHWT$5$i^!7mJJ!Yv>6lL`g&0%Qx&8$B&56-%S zuAh3WPRvkMD)B#mfLx4uG75muB#=spN^(qNiC)J;2NFzW!i?~0i*FNoj$YH0L!&c zA7dMJe0fpoJ#@Zh{N_J})4I?60}Z}D5xi`*Kk=}2x40w!L6Q)_BvQx-U}ci~-%EvG z+#3+j4wCy9)-(15me**a>1E&NHGf2V1(~Px=s%$|M@`({Rv7>gJwjXtgr1Vt56irn zK9h6ODDhg!;Pa3>Lv96Sjx#4s1N|ke?m$_K5cwjzl4=%aW%Yv8NL;km3-xO1H{*Vi zne5Sc1&cngfxYy_Bjjib?(1U$@x!4*I&*edpiiL)Ce3_CMC3>R>%dDDXy4D1aj%4_ z%}8q(zdHY%S3oWNN{ttKy13r$u~uNolh*S47ve(PB4ES^+n`NWB*dH1+#uxFRi0>`Tk*%ZlcC4xP{|?Q;1K4T~V2J+H!woLR-B(Oz z8snu=p-d;%tWdre{;cTnZ^80MzmK_$C91Di1=M{#jvJ<2c;1=IN}l)%Iq%iFfb7C1rX!8NV7rF(%q@eO`=9g=Z&BncD%c!6K20( z`to*MNIa^S;6{i9xyi|x-2%Op4gm%Me;o)#X*O!aW4oxcZP~7nPh6DNxo6Hsp85^Y z@OuDY2$#;P{K>a@nYs85pY)>=ijQGlUpg=NrXdA@0c9+{n2lKlL5`TmyL?TXG2tVj zc;K(pB!v3m7B9A@d z&Qy0$N2Hl+BZBT9eYtu2qj|>Be?*_c~wmFVP z;0U>*lgND{7#i1-X1hEvd&jp)CHF<4XiWmnAB?9K0W|NBfGQTd5XO2~)P)(sn|&mp zo8bH!(eX~hc&g|*;&Dk_cDH08*5Vk#j(+M5#2>)C@)k2If2u_U2FtVxyLP?3Eh^Z1 zHGGJ$CgR2fz_B+FwYpF&4^47G#GS3NM_qA0@JTu?c>gGLw3LaKUA}=(bR!a0HU!q3zYvy`^U@-^%|Fg0(j9*=XPeG>C|{`+|U?t14p)mffQ^UrGU#l^VwAsNZ~ z;XjHy(bg&s3y0!%DQht0D9mNhkJNdN`^9*CK7&t*Yxm!V2c|y&`lZ^I-}WEhEY%x` zd;or}31dYdoVL?t)$#EuItw*wultIZk6^v_%6#Pkx8aZ=$X&Gv44NzF3MPlSOOzQ` z^u0kJS2)tRZdLfg0>y>l_G(%9Vnx^4_Vm6B$l?~oi)%3aF8nnROsDmeZL{YjF7gH) zyGG_>`oq25!at8P#a{F0lfx_vS(wr8D6C!?e%lHFM>$+TR-NZA4)!q3SdO}&>(jTun;amB62(^eY zR8ziD>xJe>25I4BH>T?=ShoNXl*8!e%?z@*d*OCcR$dnhU)vkP?)q`gWU<~@%Uuvt z^OZ$Q1N^?nIR753&{4k=N0+!j$QRqLwBk97UEUB>XW4{H!kFzyNa|OaAdELh@V798Cqv!DDzuLG_ z_EiyYdT$e?w%vw%$*?U`qc%Se(RwJC@6)=7WhmwD{=Tw`l;^3uya;X6ggx4w>`X&n z|2J8rU$>0?$;LQ%@+6l;kb-Wzr>{?XA4ONm^H*LrKit$Z`2~{xY^>{1B&@Yx+y)4B z=k$Q3JV1Vr?enjBAxzL+4VS>Tkdj%mvBX&w6a0f(eT%k&z%`)L3?l@uJRqw#1TSNc z1j+$$J#0EnU+8;x2L?v@7Mu;Zi@Lfz7N3ljl_-8ZIdO*P;j_mY__74ZK>?6Hc=we1 zP_%5+0(|C|4dd-dQjeeS&u+of+xg=`*s$SPzkIC%WOV(s#|ehlH{N`~g_DNg#({zS zl=(POZy|Xy7Bb@Vg$~oE$BCiNXoe?~)C=)hlK}x^hJ6Kuavseup%!WHtWZ=?4mw0UG|HQD7Zd)| zkuY!Z^us0*4Cqu~BhSeQIhW3RR2Lfi%U7|B77>pJ1M3xjvXr*W^RNB2-TOShv3}l8 z>+viONWMYv=PA)`IN-LwLHvBwO+WmG^%kkPIkkzspzM43cL_ra1HUL_=wp*E7kj#! z27S3830;_YgAmbp1L@{OMPgBS|D#U24SHEJHe~Tz#j8}W4}$^_j>3TuFmnq;@Mlda zOXByt8HngSBiMS}ukc`F^$F`j2bGNBfI1LehjbVq88A?|K!PFU;`67a@9NHDGR^*IWVlsOuH!KMlZtN_vv)qp zTZmkiX4lD^=g>k&W`)Z@uh!J6g0H5EnWPqo?M_}E76rdyAVfIo<^|@D>2t1Y@onx% zP=uNJN`y>S0-OiMV}NCP5(Az6F-0ep1h9K{71|>b6tqe=riMHF0Q}3hfZv2MOTi5m z=!$v--S^(3()9q+zD!Mwx=<4F`8+F`DCn2uVXhEvFQE18#;oLiO^^UKZA;0Tp_F9u zx@^N)TAl%5rMhPO(ryOCe*Z zz-KlKlH9O+Zy+&s*y8gy{hc?;0k|9oLNw=c!{B5+0$cFf&(t~2*V|}mx!69f!zSn( zvL3%HPY0TC@2Xs(5q5Zvs4QaJSK(N;lS#i1Fh7v8I^B)(BpNqD)yu8PzAn_3@Ywj) z?uzid+vH;C!zt_MBg~3iHa2ng%2Ul=Rd!<&!gIsrYl%6p-e0WtG&TC{HrhrSV>d*k z1(=vfd#>WbL-Q>+q&6&gxm#=wEvpC)bP1K0)lND>;nwz^2}PwXvYM(}j8;1m9S+;$>`qfgh>eyXyj$tusTk15t+RoHP$ zMNCw;^o3b^bBl|<8`89mAlBM4hFl$?ggrGgJN=L*cBIM~{v6r7+pB&5`qAzYZPubb zh$-S?vU0ew8p+BGzMJJWRA^U!sJ0Q3v@ug_FYpptRsX`9bd|2w5h*&Q=g~zcQLNLK z)6#&Pn6p`}8*Fgf(%D)b-+;Pi+^=;|HOi}P{XzzE+n5XT`W>5~v(;FtBEW4pyAc#& z@ixM$a2eL(x3zo?{A#Cwh$$F))oz@zv6_@Ldl_=uhIBo*;!4zEao4BL7~8hmeo%yh zb1i|(@Y$gD3`>FNh|6}NX97gYlIXH$>Z^Xk8xpVu5yjT7U2OZa=A5>GsR-_>Hs(4c zeB&x2S?at;LO^NlFLTWS)4hy{DVNw-J);OgTOaiCB*?&7Boq;z3B3=9x1YC~_9c|U zSb|AFfqJx`&oyaXywL1W8th zsapDN{y}!t)m$|X#SIeO@0#@Iz(hvY_zD(5`ISq zxo~~kZfr4osWNmAl#v%3pvwJfP$1bApcu&`w`ouzh=!V-K{4Ugj1OqO@%JkelfP&a z`}pX9UvZ*&NHnPl+y~(In>QpRn$bj)v48)t^X36?WB-f|uH3l3ok@Z_*g~802KaI6 OEoFH%xiYXx;C}(=_~W|( literal 0 HcmV?d00001 diff --git a/Behavioral/Iterator/uml/uml.svg b/Behavioral/Iterator/uml/uml.svg new file mode 100644 index 0000000..d72d5b8 --- /dev/null +++ b/Behavioral/Iterator/uml/uml.svg @@ -0,0 +1,638 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bookList + + + + + + + + + + currentBook + + + + + + + + + + + + __construct(bookList) + + + + + + + + + + + + next() + + + + + + + + + valid() + + + + + + + + + + + + + BookListReverseIterator + + + BookListReverseIterator + + + + + + + + + + + + + + + + + + + + + + + + + books + + + + + + + + + + + + getBook(bookNumberToGet) + + + + + + + + + addBook(book) + + + + + + + + + removeBook(bookToRemove) + + + + + + + + + count() + + + + + + + + + + + + + BookList + + + BookList + + + + + + + + + + + + + + + + + + + bookList + + + + + + + + + + currentBook + + + + + + + + + + + + __construct(bookList) + + + + + + + + + + + + current() + + + + + + + + + next() + + + + + + + + + key() + + + + + + + + + valid() + + + + + + + + + rewind() + + + + + + + + + + + + + BookListIterator + + + BookListIterator + + + + + + + + + + + + + + + + + + + author + + + + + + + + + + title + + + + + + + + + + + + __construct(title, author) + + + + + + + + + + + + getAuthor() + + + + + + + + + getTitle() + + + + + + + + + getAuthorAndTitle() + + + + + + + + + + + + + Book + + + Book + + + + + + + + + diff --git a/Behavioral/Mediator/uml/Mediator.uml b/Behavioral/Mediator/uml/Mediator.uml new file mode 100644 index 0000000..19df84e --- /dev/null +++ b/Behavioral/Mediator/uml/Mediator.uml @@ -0,0 +1,46 @@ + + + PHP + \DesignPatterns\Behavioral\Mediator\Colleague + + \DesignPatterns\Behavioral\Mediator\Subsystem\Database + \DesignPatterns\Behavioral\Mediator\MediatorInterface + \DesignPatterns\Behavioral\Mediator\Subsystem\Client + \DesignPatterns\Behavioral\Mediator\Mediator + \DesignPatterns\Behavioral\Mediator\Subsystem\Server + \DesignPatterns\Behavioral\Mediator\Colleague + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/Mediator/uml/uml.png b/Behavioral/Mediator/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..04efc46e8bb83b45590605b3fdffe32233401aa1 GIT binary patch literal 20731 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 literal 0 HcmV?d00001 diff --git a/Behavioral/Mediator/uml/uml.svg b/Behavioral/Mediator/uml/uml.svg new file mode 100644 index 0000000..6934436 --- /dev/null +++ b/Behavioral/Mediator/uml/uml.svg @@ -0,0 +1,651 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + getData() + + + + + + + + + + + + + Database + + + Database + + + + + + + + + + + + + + + + + + + + + + + + sendResponse(content) + + + + + + + + + makeRequest() + + + + + + + + + queryDb() + + + + + + + + + + + + + MediatorInterface + + + MediatorInterface + + + + + + + + + + + + + + + + + + request() + + + + + + + + + output(content) + + + + + + + + + + + + + Client + + + Client + + + + + + + + + + + + + + + + + + + + + + + + + server + + + + + + + + + + database + + + + + + + + + + client + + + + + + + + + + + + setColleague(db, cl, srv) + + + + + + + + + makeRequest() + + + + + + + + + queryDb() + + + + + + + + + sendResponse(content) + + + + + + + + + + + + + Mediator + + + Mediator + + + + + + + + + + + + + + + + + + + + + process() + + + + + + + + + + + + + Server + + + Server + + + + + + + + + + + + + + + + + + + + + + + + + mediator + + + + + + + + + + + + __construct(medium) + + + + + + + + + + + + getMediator() + + + + + + + + + + + + + Colleague + + + Colleague + + + + + + + + + + + + + + + diff --git a/Behavioral/Memento/uml/Momento.uml b/Behavioral/Memento/uml/Momento.uml new file mode 100644 index 0000000..c72667e --- /dev/null +++ b/Behavioral/Memento/uml/Momento.uml @@ -0,0 +1,22 @@ + + + PHP + \DesignPatterns\Behavioral\Memento\Caretaker + + \DesignPatterns\Behavioral\Memento\Caretaker + \DesignPatterns\Behavioral\Memento\Originator + \DesignPatterns\Behavioral\Memento\Memento + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/Memento/uml/uml.png b/Behavioral/Memento/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..e96ea6951396c6d5101f156e6fccdb01365e0a89 GIT binary patch literal 8364 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + state + + + + + + + + + + + + setState(state) + + + + + + + + + saveToMemento() + + + + + + + + + restoreFromMemento(memento) + + + + + + + + + + + + + Originator + + + Originator + + + + + + + + + + + + + + + + + + run() + + + + + + + + + + + + + Caretaker + + + Caretaker + + + + + + + + + + + + + + + + + + + state + + + + + + + + + + + + __construct(stateToSave) + + + + + + + + + + + + getState() + + + + + + + + + + + + + Memento + + + Memento + + + diff --git a/Behavioral/NullObject/uml/NullObject.uml b/Behavioral/NullObject/uml/NullObject.uml new file mode 100644 index 0000000..257c915 --- /dev/null +++ b/Behavioral/NullObject/uml/NullObject.uml @@ -0,0 +1,36 @@ + + + PHP + \DesignPatterns\Behavioral\NullObject\Service + + \DesignPatterns\Behavioral\NullObject\NullLogger + \DesignPatterns\Behavioral\NullObject\PrintLogger + \DesignPatterns\Behavioral\NullObject\LoggerInterface + \DesignPatterns\Behavioral\NullObject\Service + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/NullObject/uml/uml.png b/Behavioral/NullObject/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..9a081bee990ca9c404bac6119405103d4d7c221a GIT binary patch literal 8701 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 Ky(*W01pO~Nl(h%| literal 0 HcmV?d00001 diff --git a/Behavioral/NullObject/uml/uml.svg b/Behavioral/NullObject/uml/uml.svg new file mode 100644 index 0000000..12273b4 --- /dev/null +++ b/Behavioral/NullObject/uml/uml.svg @@ -0,0 +1,304 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + log(str) + + + + + + + + + + + + + NullLogger + + + NullLogger + + + + + + + + + + + + + + + + + + log(str) + + + + + + + + + + + + + PrintLogger + + + PrintLogger + + + + + + + + + + + + + + + + + + log(str) + + + + + + + + + + + + + LoggerInterface + + + LoggerInterface + + + + + + + + + + + + + + + + + + + logger + + + + + + + + + + + + __construct(log) + + + + + + + + + + + + doSomething() + + + + + + + + + + + + + Service + + + Service + + + + + + + + + + + diff --git a/Behavioral/Observer/uml/Observer.uml b/Behavioral/Observer/uml/Observer.uml new file mode 100644 index 0000000..0e5ddef --- /dev/null +++ b/Behavioral/Observer/uml/Observer.uml @@ -0,0 +1,27 @@ + + + PHP + \DesignPatterns\Behavioral\Observer\User + + \DesignPatterns\Behavioral\Observer\UserObserver + \DesignPatterns\Behavioral\Observer\User + \SplSubject + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/Observer/uml/uml.png b/Behavioral/Observer/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..0300bd4a9d4f4cb2626518ca52d45a1fa7ff3746 GIT binary patch literal 9977 zcmaKScU)85wr#8+2#SIz5J8k)1!;yZAQ+G$MM^**fb<@!pdfXgDAGca zZs^iWAksU$9rWCH&b#;BKiEIAv-VtT&NbJZV~p(2Dleatkf3FE`Cx zK~7IkzafQOzW9LwOW9;|OQxTBt?o&6WuqPg(Asy)b$HggEQVPE$0DP3j}X z<8ZL8heJh-or#w8O+y()c-vS?QW29Lmg=_5U5eY-jS3bs!lQx2j6ngPajs*LrR5(v z(0(6`J2t;qvy9c8mD=tR^kTna_u?h^;&P!x}qI61jFOQl}L%DL*v@He{_hJ zdwAn%4H~xBL(L@6j=x4>Qg`4QBqq1%HESz@B@0cl4X?SO&Q_*5gnB+tbIPY%MUZUe z-j(HWZ)7Z=vsGsR%0gE!DC-nI-}B-u?1w{?SI3*BS9GvKijVKI%sa&9f( zlW$uwJFcSEP|}2Fh1FJ*qR?ub%3bNKsIuVTou4i&jKEF;i_i(FtvCynsNKwyUn^d$ z!&?ZsWSPL()zcZMbo6(xT9|&&f&G3x%)bC$V~0W`TjOJfd2u@yO89VcS&RLgGi`fkAca? zMOVoy@>O?A_LVEG4oXUuV`5pmLo}gQmiPN&c4Uh}TpS|ZcPI?B?5px}y4O|(cR7=v z%Lp4WLXOPKLJY*bc6L82uM=YuDs5?Zznbu?r8^%RJ2ppN&7(MZ`}4h+BNW|PGG5Va~iVaXO{u~4_-zpZSPrBJkhSzL2=;f#-Dd@xqq9IQin6FUzX z9K;0ATMX1^uiZcBWz#i_Ei+HtOqeURl~;~c%FEVi&hIH$rrD{X>Cbv3CI%zVu!!kO zfl11U|MAGZf#zsGgpt4UpRHd?#zTsjd1NrGi>!BiSFWykN2fr^+^(8tZB5BCso!-g zi-QH-ZdcCE(k5*B@@3|3!}##~T&LGNBabksG!44^-d=C{lSk%&AKX)SlJWSbh}o+6 z%}@E@Tn|n^M#z@Fwzl?Wy;-57IU}u2*FfS+6GVkoXP2JD+>VnNHoLs2R=kc~1cr8$RQjQD)T(L#1%?oyVn;uM!X9=mZl~oF58tR6mMb8P49jwIB z+Rdtyb3E_{Prh3PQIz_KP*&!#Mq|-ne9b3p&|NsVXhb4i%YX<`|h#j>5rPS_X&HyM3YS#8j3-HWIEnT#4Z%x;^i#a7N}L zt@$+xwaP97ky2xc7C-w3Ioq79{z<3TWQ3qm-I*NynfH{e$tH1;>4Z9`rz^TV`E3vL z>)D8bW+C`(5;`sIo5Qb9zRI+IYU%b)nI+Jd8Y4?~nI)X`&rD2mck>qK-ZBL@>l=JN zcKXUzB!y)2-#Ek}YtEyf(5Ejw1rwi$iVzGnFNo?AjF$I}6R;ePJSrRNE6%T$`S_3-RhrtG@r6Y& z*n6YNqf-Akbu6TvIgeqe%cFbO5(;@?+B?isqZC!8ORWHgdJLT1wp>#I8}=lL$gM`- z)#Hc0IHqZse4p$7`t$a8NY?EiVJXF$^g0sv2>kr-yKGaOj@#X3cUjq1Yf0-4)T@pT@fhY7yb#kD_V+_p3cG7aEcYRw>dV35L7BJg62Qrgu=f)iu(+5Fufqk_c$CD zWk6xtZsv~zFbnD#0zfucKW_A%N5#9U(w(7-V1e%<$8OC*(J+Ny$AJ@TBcBd!Yk67q zXvg0bmuirdTt|^=AiVFcpLwTT@|JkIIU%_xKg)jFWO%jHCe8e0XL0X%t83|Gs`hZY z2|qMV(|%9)SsE!}oA z)>V-%uFe5F51rjdIpOQ;oo(T;tg|;)6NXP*-~2wMoxL&X+3iCKWZKQ{$Rt=r^BPt) zB4&g2C@0!-K%{zDcAe=sWMI0VS(gJNiJ&plO_UJ-Jw6pmU*odyQ#m(uVhR6RQ*=bn za5Ehn%Z$LvWxp`|E|ji&5w5FhtG+dLp@s9y>I zuub;XNoy%pkwEuiYK$C*go%g+%HwO+i&3!~0Wnk+--Fpqye?@97R4a(-GyHUQ93Y8<~Q6+Qfjuy0;%H>84N2# zVLDzU^RqlFL3^1f*>7~B`b)uMUU#OFU6(N_MP4X$)pvW5oBdmxN}7e*3ik|+P%|Mq z#%^Vf;n_L8CiQNgD=PzPYy96`qjk=WgS<+ZV7~Q(OwdH47-M4xAG8#oo`WuV#3TB8 zmG&}gKhmX_WSFQ+gy5fewp~{-7>b(3@c7^u_lO*e8jemabLm}sL-z26FqDja1+wjR zn3CGB(G(jAENpzH>ex z`p02UTu{t=$*$G!S$OS#Uya?UA%8ynM4?UL z#3HgG;S&*U>5AO-eCWfszg zsl6lgFc$a1468J-7UCK)v9oy8K!-i)o9>|&d?N3^KKh#<>1?B`t>b{7|5fQyfn?`8 zz}B7R#y+pN^6r#Exa-Cn6z&ks=jxEXc{&w0$a3+yHP-Sa8mDNiX3Lu2kB&i&tWb=Z z6RFXPq2zYY%t*A+AQQmTHNhIPn!hTMtY;e7M&eqQA8EmCJyW zRBKnHEsvkA%S zvNNUswb6?#$5(EK`6m-_A9u{m@$FZ=NCJSi%6p1YXcgoW_T8Y#o*$sA7$tGnb=qqAmbhnH_r%Zkv&N`9RPV+{5crnxqudaYbI3x<7bH;Q{9(O| zrjm4=JJ#f@u*lCrTZ+5REiyaY$ZVO0tBd91X>oLOhwH5gc$T|+H!r401~i)?r`Do6 z2INQ4B@Zq0ZP$PPe&c1pZ>90goTGusaCywi0?dVTw{>~+Pq+mwBWzHT~H|Uaihe%ntKca}$hVOL@HP2p}M|lZSyB(Cw#< zH#cYr{{y-LoJf+KL=tGn?NS$jTN7RFQjfU?=)*r>1ln}svIwh>tG^;;J2`{BgNn>c z1U!Q<)+p7t$t}mok(ua~CJCP^1LS>Gmy}`3ZwI4OL)`_UHih>cG9Q2j|NRv?$aH5;qSXmY#zc^NT(`!gB zjw|u3z(Pe>+s`eEtxWuM?Uj-u3~c8fM5cuKUJL{Ce!qS03ZRbwtG+~7A|R9yT>j&+ zc^FuP6@-;iYY(BLe2-&bgHu=2QHK70;^X$|W!rORZm?L=Kgyhh2PmRoa}FvW`LH#! zr6-N_pOmJ}RKtOw5qEMsh_L2FX*cop$%n;f-g1qh0G42rU_vk@=XJFqiXuikPEmwa z6zy`5W0T5SJ%`;X>^1o`%UM?~lPp0FtSk_y>Jh$8F?>y;Zi{m&gW^E~%KgiU`y;Qv z{p3%t8YHPmgvBT7Blh`y7dcw{vhr_xYRX(yp489;c%JjE! zgqv*b+%zJrI27rVAhI`NTXsKh(vAG<3lb65q^;TgsWje0n^rOsBJ6U9eUNR2ozNY^ z?v9duaqW;YJmUjTl@btH4njzf+d<`SC9|s!Vf#I{|L6Dy1mlPqyQV{L&PXC|CMEUL zeb~DI!ZHcZTl-zaUjm_^zilQ^>3$cJAs~3{^u$vp$Ws?kJNE|K*=ZdV22*odT^hf@ zfQBy*_f-R%rO;QD=}7b*7m=;|d=c0|CfUl69w0ZNF*e|H6OYq$87&v00U&&hVzd$C)o=u+`gNj&;7Ln z!an#f(=Nsr!e9Yb4+6gVN=OIXz(!NZ-2H%Kuz_p6xM_G9W!^~>P8`{YqE!tuF|T#hsqiCX%+39c{vq0};w`wr z{di^VcIr4qjDYQwAWjuynkBuu-`2`~1?n-rUI7S6F+dvQ@l3v%QP!x2G#0QVcj8SQ^J3C)kt#s#LvOc}8MsKx7!PZo7=+B%6RL8cTg^plAt z*Z#-qdVZ&Bfd(vdvQa=p1J(@Fh>wrY%geU5aWTst+#nZPP+ZSmMY6N7#0HF=XGx-E zpe&WL70ua<-=0m~zCpmL>TkKMGUi3jXyw+SPy=f= z6xeR28No0@jyNP4Igk8UfKCO~daU~G+3JQ#V;@m*qTyy{xmj7F#r~Y_`IPw)fIeda zhreFQ%FTs#7>A0*JZo`0kBtdYKn?fECsJ>$+kETq)U%CakIKv1VH#|Ot8`t=#A4@@ zpe{aFU5;qIG^>;=Zc(#uvgOBgw1W~S{L`&uU#Cg0%qD*1_4ryhHd!xC{GmF)=hXXN)S;# zcR`L-)UTZIgDo@w^*O?Cc%u;O^a0!><2$f1f)T*Eb3+KEd`wLOQnS75?UbmkT0ULW+#S=T z9Li1R)V-dklsLaQ+1MyKf-}u6qTO`&r{SYR+m_Pm>5tS%ib0Gy2p#lS$9i_cSi>rB zX@*0iu0IWzUn*U(y=dA4^iBWbR#Y9*tZ1Pj`o?{r!H^bYpYCmGRC<-3?CKU>sDk^mr}+%1v56`A78eATD)tM8xi#18FmXH0nS)*wKrPgoQ1EKr;Vy1ew*hPM zEhA&8`_j(Btvov;t@+G7T$v&6V=cgr^_d{4P3oU}?Tg*dxKm30Yt|Uf_LKeTnZ#J3 zNq6JOhd>>aFMqy{&4b$B7NXbVWh>L~Zn3^sheRV8%DX&OhsRA4*YAWnM=ShEJXY+5A0Gj$=a+v2G(ckl zS{Y2H-d&o2+QRk?*qMp00GaBFmE|Y$^Ql%0151{fP|wo=kPUmGMGm3bBlQ7jk&;$$ z!p+H!d#ifS?juDoE%3=}XL&&^5$a1`R*r7-#Fj5uOzWZXah$y_U7(%SZZ@7UPL%Il z6fDY76r$IV`=jqa&DwJY!^osr*Nz`rS^)LR&@Bd~*Fz zV7^D0xQtX^Y3FWECVu&R6isD*xEqfoBHjD(Wv8DNKn35QG$`<;QvFA}$M zQUq5`JmE`CaaY~d5rRX9Z!e)3I-eoJ22p{UhaqiMWkv|4tBTt7zqYt*@*m3uKF>BX4r5%R6u;;N;E1lHs~Ex0tR{60dWiZ zSKLUj+2;uI(Py06IRcIV4&0LmKz3I8W826yTGwon}XIZh<;uBhB<@w4sjb3XDrk(taDKOpJ z)16fKrSz>Qk7wj-BeZtV==u@PfVK*_bUR<2CNaogDIk-P3Sx4UGbel5wV zFtv@Y1e>^cRA-xhIkR%|)n)Eq`a0C{gwkv4ej8tD=u@wYy$Sy3tNCALji?7j;gA_X zI5A)bH-tpo3jS{YNzW(++qMZ|guK7^2#vq$z8;!N$-V775)+GQq8ho6@%g>>-WLbw zwT$ce4g2R;u8GAA2t_I`RWhp|i3)T!O?@4lOhEDem4m%UqxfWSo%iX!A1paxw1>Wd zZ_pN?#UqEKV0bPmcY%Cj3Ct^h2$ZuGtniM}ZZM{9p$x-K6aQ`rIOUSqx@FM+^U)Vls92-(Bd z(#O3xZp@b&!dN(pJ0b zMB2B`9w#BeiuiX`w4}VH4gWJO4Yl)Sl)ikJ0=r(n+qDPe@8+ygZ&A?^!VELv>wyPL zIGwc+^wE4u^1+erVDye3}ch)Za+UKlOkBzheUqM!ykA`KMHI;JAYnM z#)LYVj?yTDA)cwWqL7k6YC&^p#KeDW_?Ha=6qDlk+Lya=AuOyQ)13cLZTL$S{zd{$ z9sZXtJ*xe~rf(S_`nsexh?O74nJp>WyTfPt!yjHdZn+3FFd;E60l1#=L`fMM>_GlS1-__dl<>A?xQJiLF`}w8h!CfN0kzC9-=_B7=~%ud zKGH}wqVFa3W}dGqm80|=_I3{ROoe;;6QP3#vxJZ@o9Fcbfr8#MOsRErV6~ucO<-Bx zRywxie2t6w%75wMAB)B@zDdYmZ`GKQ~hET-*> zEa}R;*<#o`y}cd)T-3sLC(%*9qWZG&#>%sUo2e&tP8M+!iAod!82zIt|Am?OK2+eM zhzfWKL}Ieaf&iyS4F@3ANIQfY3nx60$a zm_LxT*A~Z%U1qY1jCgv&*vdnjTZ(@`m{s-xk?dEohp8$nfCM{=OA&7n?w&VqZ%UbN z;*p3Ke^;X47Ms}?Rhav8S%XfwH_q<6IQ`}vRJeot2ebuW+X>JT4Fr(q6r=4g-4*qb zSkn4IqsV*h7dyD^%wFu=CL_|W&5It>XPVX!oKV`~o^ncm$@7Z=4dS6_xX1r5XJ#m( zDsu)KuRQ2{xfiIQ&}c$E!=-M0lPg6>=n2~^|5&@2kyx?YV_|E$3#@eL}OrE4VC zRWu#q)Iiy4QA4oJr2)W5fe`{qxCxMV!UZ_cz)w!TJj2B>w9$NL(zvH1lqrB0px<#) zDE^qhJDhqYMzV!HL!QhZUNnh}I)U$jX7mw0+xS6gIn9^d{n@A*r)5--qP0)Xs7Ap8 ze7;?JcU%-}X`}yv6RKcsUBsDXW-6hYITTyhzjL@U{hcYhKy&CyJ_C}m4T(fj_df09 z=3vn}OdJ(i;;BPbXeRp}M>%BX)Qzi}$)%S}yJ}wXlT~AM)-2YGPweF~ecuuRvuI7a z68I(d$Q=P?XJ6#e%c}99ijGF9)MrUYbLy$6Mly zYgk)bOBseg&8fy;16^Z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + data + + + + + + + + + + observers + + + + + + + + + + + + attach(observer) + + + + + + + + + detach(observer) + + + + + + + + + notify() + + + + + + + + + __set(name, value) + + + + + + + + + + + + + User + + + User + + + + + + + + + + + + + + + + + + update(subject) + + + + + + + + + + + + + UserObserver + + + UserObserver + + + + + + + + + + + + + + + + + + attach(observer) + + + + + + + + + detach(observer) + + + + + + + + + notify() + + + + + + + + + + + + + SplSubject + + + SplSubject + + + + + + + + + diff --git a/Behavioral/Specification/uml/Specification.uml b/Behavioral/Specification/uml/Specification.uml new file mode 100644 index 0000000..003e549 --- /dev/null +++ b/Behavioral/Specification/uml/Specification.uml @@ -0,0 +1,55 @@ + + + PHP + \DesignPatterns\Behavioral\Specification\AbstractSpecification + + \DesignPatterns\Behavioral\Specification\PriceSpecification + \DesignPatterns\Behavioral\Specification\Not + \DesignPatterns\Behavioral\Specification\SpecificationInterface + \DesignPatterns\Behavioral\Specification\Plus + \DesignPatterns\Behavioral\Specification\AbstractSpecification + \DesignPatterns\Behavioral\Specification\Either + \DesignPatterns\Behavioral\Specification\Item + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/Specification/uml/uml.png b/Behavioral/Specification/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..0b31e49d53921416de9ae9471b8c82d377ca1d56 GIT binary patch literal 25534 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + maxPrice + + + + + + + + + + minPrice + + + + + + + + + + + + setMaxPrice(maxPrice) + + + + + + + + + setMinPrice(minPrice) + + + + + + + + + isSatisfiedBy(item) + + + + + + + + + + + + + PriceSpecification + + + PriceSpecification + + + + + + + + + + + + + + + + + + + spec + + + + + + + + + + + + __construct(spec) + + + + + + + + + + + + isSatisfiedBy(item) + + + + + + + + + + + + + Not + + + Not + + + + + + + + + + + + + + + + + + isSatisfiedBy(item) + + + + + + + + + plus(spec) + + + + + + + + + either(spec) + + + + + + + + + not() + + + + + + + + + + + + + SpecificationInterface + + + SpecificationInterface + + + + + + + + + + + + + + + + + + + left + + + + + + + + + + right + + + + + + + + + + + + __construct(left, right) + + + + + + + + + + + + isSatisfiedBy(item) + + + + + + + + + + + + + Plus + + + Plus + + + + + + + + + + + + + + + + + + isSatisfiedBy(item) + + + + + + + + + plus(spec) + + + + + + + + + either(spec) + + + + + + + + + not() + + + + + + + + + + + + + AbstractSpecification + + + AbstractSpecification + + + + + + + + + + + + + + + + + + + left + + + + + + + + + + right + + + + + + + + + + + + __construct(left, right) + + + + + + + + + + + + isSatisfiedBy(item) + + + + + + + + + + + + + Either + + + Either + + + + + + + + + + + + + + + + + + + price + + + + + + + + + + + + __construct(price) + + + + + + + + + + + + getPrice() + + + + + + + + + + + + + Item + + + Item + + + + + + + + + + + + + + + + + diff --git a/Behavioral/State/uml/State.uml b/Behavioral/State/uml/State.uml new file mode 100644 index 0000000..6b825dd --- /dev/null +++ b/Behavioral/State/uml/State.uml @@ -0,0 +1,37 @@ + + + PHP + \DesignPatterns\Behavioral\State\OrderInterface + + \DesignPatterns\Behavioral\State\OrderFactory + \DesignPatterns\Behavioral\State\CreateOrder + \DesignPatterns\Behavioral\State\OrderController + \DesignPatterns\Behavioral\State\OrderInterface + \DesignPatterns\Behavioral\State\ShippingOrder + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/State/uml/uml.png b/Behavioral/State/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..847a4e47cbbbb025042bed94785af42966b45f68 GIT binary patch literal 12470 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + order + + + + + + + + + + + + __construct(order) + + + + + + + + + + + + shipOrder() + + + + + + + + + completeOrder() + + + + + + + + + + + + + CreateOrder + + + CreateOrder + + + + + + + + + + + + + + + + + + __construct() + + + + + + + + + + + + getOrder(id) + + + + + + + + + + + + + OrderFactory + + + OrderFactory + + + + + + + + + + + + + + + + + + shipAction(id) + + + + + + + + + completeAction(id) + + + + + + + + + + + + + OrderController + + + OrderController + + + + + + + + + + + + + + + + + + shipOrder() + + + + + + + + + completeOrder() + + + + + + + + + + + + + OrderInterface + + + OrderInterface + + + + + + + + + + + + + + + + + + + order + + + + + + + + + + + + __construct(order) + + + + + + + + + + + + shipOrder() + + + + + + + + + completeOrder() + + + + + + + + + + + + + ShippingOrder + + + ShippingOrder + + + + + + + + + + + diff --git a/Behavioral/Strategy/uml/Strategy.uml b/Behavioral/Strategy/uml/Strategy.uml new file mode 100644 index 0000000..7c2838a --- /dev/null +++ b/Behavioral/Strategy/uml/Strategy.uml @@ -0,0 +1,36 @@ + + + PHP + \DesignPatterns\Behavioral\Strategy\ComparatorInterface + + \DesignPatterns\Behavioral\Strategy\ObjectCollection + \DesignPatterns\Behavioral\Strategy\DateComparator + \DesignPatterns\Behavioral\Strategy\ComparatorInterface + \DesignPatterns\Behavioral\Strategy\IdComparator + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/Strategy/uml/uml.png b/Behavioral/Strategy/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..269e496d6b7a26cafb35e03bf8e87bdd2dad6405 GIT binary patch literal 10852 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + elements + + + + + + + + + + comparator + + + + + + + + + + + + __construct(elements) + + + + + + + + + + + + sort() + + + + + + + + + setComparator(comparator) + + + + + + + + + + + + + ObjectCollection + + + ObjectCollection + + + + + + + + + + + + + + + + + + compare(a, b) + + + + + + + + + + + + + DateComparator + + + DateComparator + + + + + + + + + + + + + + + + + + compare(a, b) + + + + + + + + + + + + + ComparatorInterface + + + ComparatorInterface + + + + + + + + + + + + + + + + + + compare(a, b) + + + + + + + + + + + + + IdComparator + + + IdComparator + + + + + + + + + + + diff --git a/Behavioral/TemplateMethod/uml/TemplateMethod.uml b/Behavioral/TemplateMethod/uml/TemplateMethod.uml new file mode 100644 index 0000000..063b022 --- /dev/null +++ b/Behavioral/TemplateMethod/uml/TemplateMethod.uml @@ -0,0 +1,35 @@ + + + PHP + \DesignPatterns\Behavioral\TemplateMethod\BeachJourney + + \DesignPatterns\Behavioral\TemplateMethod\CityJourney + \DesignPatterns\Behavioral\TemplateMethod\Journey + \DesignPatterns\Behavioral\TemplateMethod\BeachJourney + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/TemplateMethod/uml/uml.png b/Behavioral/TemplateMethod/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..c557e8fcdb831339cfab288323611835f0cac518 GIT binary patch literal 8688 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 CCa9MH literal 0 HcmV?d00001 diff --git a/Behavioral/TemplateMethod/uml/uml.svg b/Behavioral/TemplateMethod/uml/uml.svg new file mode 100644 index 0000000..d06adcb --- /dev/null +++ b/Behavioral/TemplateMethod/uml/uml.svg @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + enjoyVacation() + + + + + + + + + + + + + CityJourney + + + CityJourney + + + + + + + + + + + + + + + + + + takeATrip() + + + + + + + + + enjoyVacation() + + + + + + + + + buyGift() + + + + + + + + + buyAFlight() + + + + + + + + + takePlane() + + + + + + + + + + + + + Journey + + + Journey + + + + + + + + + + + + + + + + + + enjoyVacation() + + + + + + + + + + + + + BeachJourney + + + BeachJourney + + + + + + + + + + + diff --git a/Behavioral/Visitor/uml/Visitor.uml b/Behavioral/Visitor/uml/Visitor.uml new file mode 100644 index 0000000..cb03bd5 --- /dev/null +++ b/Behavioral/Visitor/uml/Visitor.uml @@ -0,0 +1,41 @@ + + + PHP + \DesignPatterns\Behavioral\Visitor\Group + + \DesignPatterns\Behavioral\Visitor\Role + \DesignPatterns\Behavioral\Visitor\RolePrintVisitor + \DesignPatterns\Behavioral\Visitor\Group + \DesignPatterns\Behavioral\Visitor\RoleVisitorInterface + \DesignPatterns\Behavioral\Visitor\User + + + + + + + + + + + + + + + + + + + + + + + + Fields + Constants + Constructors + Methods + + private + + diff --git a/Behavioral/Visitor/uml/uml.png b/Behavioral/Visitor/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e59c0085da2193230c2566b649a5cdbd011446 GIT binary patch literal 11641 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 BjQ;=t literal 0 HcmV?d00001 diff --git a/Behavioral/Visitor/uml/uml.svg b/Behavioral/Visitor/uml/uml.svg new file mode 100644 index 0000000..b2a6945 --- /dev/null +++ b/Behavioral/Visitor/uml/uml.svg @@ -0,0 +1,441 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + accept(visitor) + + + + + + + + + + + + + Role + + + Role + + + + + + + + + + + + + + + + + + + + + + + + visitGroup(role) + + + + + + + + + visitUser(role) + + + + + + + + + + + + + RolePrintVisitor + + + RolePrintVisitor + + + + + + + + + + + + + + + + + + + name + + + + + + + + + + + + __construct(name) + + + + + + + + + + + + getName() + + + + + + + + + + + + + Group + + + Group + + + + + + + + + + + + + + + + + + + + + + + + visitUser(role) + + + + + + + + + visitGroup(role) + + + + + + + + + + + + + RoleVisitorInterface + + + RoleVisitorInterface + + + + + + + + + + + + + + + + + + + name + + + + + + + + + + + + __construct(name) + + + + + + + + + + + + getName() + + + + + + + + + + + + + User + + + User + + + + + + + + + + + + + diff --git a/Creational/Singleton/README.md b/Creational/Singleton/README.md index 5148762..b90fcdc 100644 --- a/Creational/Singleton/README.md +++ b/Creational/Singleton/README.md @@ -12,10 +12,6 @@ To have only one instance of this object in the application that will handle all * Logger (may also be a Multiton if there are many log files for several purposes) * Lock file for the application (there is only one in the filesystem ...) -## Diagram - - - ## UML Diagram ![Alt Singleton UML Diagram](uml/uml.png) \ No newline at end of file