From 1cefd7a61c5d6b8e2d98de29e7d8fa5b7127b5cd Mon Sep 17 00:00:00 2001 From: Luis <1105281+lpenap@users.noreply.github.com> Date: Tue, 17 Jun 2025 16:01:39 -0300 Subject: [PATCH] Add class diagram for chain of responsibility --- assets/images/chainofresponsibility.png | Bin 0 -> 20762 bytes .../constructs/chainofresponsibility/README.md | 14 ++++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 assets/images/chainofresponsibility.png diff --git a/assets/images/chainofresponsibility.png b/assets/images/chainofresponsibility.png new file mode 100644 index 0000000000000000000000000000000000000000..7631f4e89a3da34b7826c13bd5d8cb6e1b1caf53 GIT binary patch literal 20762 zcmbrm1yq$^w?6uAx*I8JK|&fq8Vp)MQ9(db5R{S@5Vlx=luAg0l2U?{G!i19bhmU1 z(s}3hr{DLTd(JrbfA4h+m9h8ceb>9zTys9pGoQ5sbhK1Ri5Q6x1R+&Zy?7Ntu;53O zH38X~gHrMoB{=SZ&;5r_0sV}v)>x4-fR(EOSi_gcKG7@Z}@q!c>hcf7g z9vSv}-nzIDRL`3fu&UL}qk17OGIn{^#CUx#B-PTyCfUD3&@#l4KeOH1jFT-6`?+kb zWXO%RV&jLwoG*k}n7{nE(Dc-T-}#x5#_ae(xvkWDgL~Ow{mV(zL`JGZ_H1@2>N8wf zjE1f{?6khMvBxBKBHGs968u}w6-B+iW%erW(EB{mxBW{B6tT#~G_EyUSwF@c-Dl$& zU2;n-?w-WA2ZF6OG-o2%Bzp{OaBk2xa+G~l9uF#EFFpUXrTeq9en^8(FBOaI*)p1y zKGnL~TSI96_Yr5i>p7nNTFVfm&K`TL8l^& zBOe8y61+S!baiwc^5&nZ>wEYy5?cL9FMP0qc`+yS-HbMK-o5+@!8dD zVQ-VzOx0)_LNfAIxXiIp!K51gq+X{Y{VUmduB_=^6X!dz6l@xRTOR&3YTd?sy?Vf6 zhV}aj*;2s=;$Opk#zr4!jzT@4a~|B^`9;9ngc3iy|Yh5-Jh zA;N)wiEuGt@e~V%mc4(lvnEw@D!Kh<2Ns(Q1=60_-`^iE<4#m_Dj+0ewCbS@s~B=h z5mEG=X-jOo!)&Vl2ft>% zz2?5$Y;2$BKW&nJs%1R*0;B#B3ol6+ge-CaMqc+Q!<{tTWDH~Rcw@XBge8O(lSqojSXQV zhc*2&j`c>|rt{6qkKJNkg1Ev?O`6A)wchCi57wvDzP{qB-d~ZiF-w$xXmsnA%|ycs zIx{mfW@(oX#l>#-?*{}0(F_??`&4>uuiW__mrVF1Cnu+*L^8s^C`$0w`sQY8QJKs9 ztMKq^6&`E#^%wc7T^CO*3q*XdB4?2$ASF%Reg61y-Ok#ijk9@M_cPDp{QTXc{nZBh zUj#VF)FT9aL~n!`8ymOG9;(QFoV|)@R3C+EXpmQREiH{zC*G)boH$?h#B*~Ym`O6^ z?(5gD6^;*n!Otrr<&tb{XanO4kC!>6@cz|Q^&*?DnOKLaWW2NYdY1-1p3ZtJF*7q0 zUS(l!&aL@IC&!?uz_O*vd-v7*V*3$w=NGN5zVaX3_P3U$T^BYMdhUG*VZL(Z%83&v zE<7Wl^y20}V^HYdoXM~#vHI`TRlL(1%OR9`XUm8P-D_uS)8ZZzA1!t#FkUq|?z<%I zllRxN0;f4uLb8o3_p}ub>l1v|8t80072D?z#%muBh<2o?QS+I#K=hc4xx2gDhz-8p z+gv1mpOAGe^Sm=|ezVTM@1;||_1sHhM6Ye>6AhAMn03PrX2oTBFoJ6B5}`(vU@Doz zXa#RZZetL$Or+MYoa}5yNqeJ$+g~5cIq%q8OSx*!c~rJNxFZ7NP3!NX-PWu3~*Ojt-5 z!`tZ(A3l)F@0cpPNjQvVkAD1*vDCD*+}rGYybvuHg{8l@>1$B#xgM{sdiipyD=c-& z)8(O()!|PclgeniQZ?xED}0ZSNEyXVTLJ9rl|+vHBk5_iH{`9Qg3>#SpgXOleP&`h8P+soOJ8?z4NRQx)3|oL?L* zch@%1PgReY?@I4F|D23@u;^Y?via810GCE2%~(q{>`S-G1WGzOy)@0}*|x;4^;cXP z>JfadOZ_4S@}3*kn+rWQcr`JXl$ASmi#2~CgBuV>{ar&P4l0)}5#E(!I`JnBi}Ycie0iqCR8N=sT7jEiN29Jg4*tyOP zl6?LtjIx6p;sduRft2{)J2sq4PF6Nj*|z5b0%_W|tIY1kXcg05?PGj3HMLL{xgY$u zlY)%+Su5nYsHuO9G0OJT)46SeI37ra`Z{&_$}M%YGT!+{K<0GSV`v; z*WHzH(mx-XdXD&qg@v( zJ!~;s#;P#iUe{ORP-}FJ*XYkGYReNU>PVqyP$3~&{3jenst@x$NAHB@r8(G}t*Xu* zH61bjz2*Tm!YMCbWj9o8Z@=>Tf>oZ0tA|&2>Y)sa!!2i<&CUytEUZ42mFWuP?zcdt ze87ezDeMX$N}G7GPo6wcd(B;RuP@i8D-Dv#MpR_xljdJL35gt#jen;+8Z@G4jQ+E? z2x{v8ZnOXS$7Z3$-kex$%~u&2Jb%KVmgN8Gm;UEV{m-v@lhuUR&LWB-Fi*b1*uwYO z{wW+7Fz|o+)pUF@}V zSSSB@r){*_SHa}&wLf=AAIBB8?T1Y-yq1}mXp(Q9J*RdEIc31y#wPmZ%UV5p^1oQc1LZQ;Zq}V~<%cenA|xS=$TQJ# zajoj>f`~o!&6_t}7rJjkNz;FO8R;&#kz>FlX+Omug#S0|g`WqV?zkHd6YL+d`!SNQV&gNp@YAy#C*HfJF`FS;lPq6CQ!DUEyd70O? z{px7t_VUmdMp@4d|Gj}v&gn@u)LvUlye3r#zh>JS$fA+RGdF+C&CUJzQDELcl+VY; zhTc-~zU%U5N>r2)86oB(lX;W-T77B!@?-bc2uyPP3hws2zYbZZ%zf3kxw^KtmQK(p z$w@ua%E}5V_x=0#larI-p=DebXd+H?b4%Ro4Jz2hqdjw9_p==2nzbJdnKyK((Z#ut zjIKhyHY~C4aDqLXF+?Y1Y(0!K?b*D3yt1wkhTQGVR=a06Qs%n1G0&wQp7i}@&&;=2 z8|tfu^mKpbx`P{OJ}RQy2@Z*sSk~!pe-m(h)@{t?2pLnQ5Hzk({kjLg(fN5}V}tMd zd%!E&XXXL%v?a(56zp-axiv1spOqEC+jMA6J&2SQz7qll*I@CXyam{mUM_SPGxiKs z(ji2jdKnSXkkCm+!YUspkSOCGQtShxI(D%88$c?th(Y#&`S57;$Iw=*Q1)^^MnQ%e z$*Wv*+?Qj#cP5@&d_{D*9!^90XRU` zP7%AGiAuCOokRV?Cf~t_m=*x z6cVUwF_U7OI&XLo1Buw4Xor*^P!M0x39Sr&5{rMq*csIstYbVfxBZ@xGF>gGa$jZPvb0-GO}-{$UQe)=c@2U2 z7cwl)uCA`;L85c}x!7VTaBy*N>gx}Ga#qRyAt7ShFDxV^w3f-nkHq-3U%a^Y31<@P zPm&wN`S7c=gYnlsNpN)23aa9`sO^21h&QKFsoS!FrY6a>xl%+n^q z2etUD;k>$OR^MX6OQHB2Y|QKO`2xy4K04Hh;JXxE;=Q}R;SM{%HUh#xMn)!zUoWKK z;FI(0IaGUq_fsO;6s-3Co=4dD>QRCM>eCRrtJTLxtqltiRTjz+2x}5~g@4GQa8PRoyeKj%Xn}r@bJG;ERymuxepvx?SB0jqp zdBQAzAwC7_jl6iUqoX4Qls~4UqoYppr_oq{-hD@bqA~to^Y7_ZtT)Ni<(s7EFJ7z% zY}@YyfqeV+?Jdu5j$=m-KbnpSQ2$P9gH;9tY*6U;KeowRw8TrhQdQ@xu&fLnUnbfd z;|n{c#QK{*J+X9-w|rmw?Z*(Yr?ayEtyC8X6(`*nS@!S?W z&ssm+!spq6#^bQ~1EM1CD@OV1?VYhn^HEgYzFFv^@ZEn6>Lq2(cMTQ8?1LX8Qu0t! zcNctL?%E&bRqX{{T>v&vVmt6-X=xa6(@8x-V&W{FWGpWA=J&a|xsWZpcn~`UDz=PQ zMH@rMHil>Kb|<;Md;7LusL|R`&#J4pxA&vfH>&-VVSyVqi3 z#jyy_q;KJeqee60Nx-}Gs;O^Lw_E14#Ax%lD-L2ir_aOa_;s{iSvsstnoN7Ay*D_gCBk`Ns zQuOSH677u|_-nz}n!HPnfV~5OX)klV$IqYD7|aBDT2@-xz>0S3dh3r+Y-$!3mIbV^ ztSoVl&PEkJweV8_#EKFmTV{3IL(hcOB`O&cjK}hbE1Yzj-7`(i*pasq);x4y}{RQ z7K6{~9;f0cy+CgJJVE|Y?m|Me6;fw$Aw>)wO1C-9l-VBnO;=Z!H#1(rHzA@6OD=*= z(ZGQ58G_TZq2Hhb zt?+-ji|K6YyA!`W506(-PxjBq=I#bZ3>NHmrEAZJ`*ys&EWUCEP@W1n4Gk5 zZ~z+cP-)YONj+}?i=yyY6{-DwL#6#P(O5D90yfrzjV^6K2N-5``*$D=32`}AU$5zX z_3to*dS^b=fYZW--O{#TB>CC>NF*n5Gvez^_k(CrONc(G!V*BMAji-0pu@vyn3$ME zpMUx!b+*fcP_=!X6O|pfzvb(S`W<-TdBCP^Xg%3)mASmcgx;S!O27Q~9bZzSl{|p2 zT)q0L@deXh(yt#=Q&aqUxj$*|TJOI^4}0%dH@c?AM*849x_)J)cWaZ1(Tlq9_^Kbx z?!VSN@!$mdO4D@7aZ4Q`+wp&H^;cNJ1a;5JS%C|g7>xfZV&picKmPlV+8!R~5}k-> zf5`B@;3Gb9X50b~jRQ(g8*E~C?xB+II^$R&`&cwXihmhA2B z0&f2{HkK&23^ed5Q4G<~92C!6c%pzpyP>WAd<$M)UI0Gk+BOn3IHoo>UrX?k{Gq}% zC}k#!$_rFH_?4#g7;k@j)!o$w<;Fo5(SL=MNN(3yxpjArDy(o7vzuKxqOS2NDfl4eve<5{X$)IT3ca`ufu`D=4>a`N^K4GsdYoO1|3j&4Yy?>3|( zG-|+6X!_GDF<|-?2J?+UnS;c+y}E=&aSz4w8Rm!g1G(>7s_${7$J!5g?!z2z1PKHM zK!<3l&cu6u%op&a+v@0{0}L6^HV@WXoyh{|f@iJU$029H2N~fnPA9oDQ88yXtY(M7@7Lg_^~cz7~YLRl93 z@@;2Q?Tg`WOeHzv(_S}7rujp_^b2ho|+*?c# zHP~24;3Tke5SqMsNAZZl0qfIznW%dX;!jJ|c|`F6Jp6szp<=tG{(Ns<9OR!51k&jvY0!M z3;Z)LhyyHRCmQ5-AkyJ@m=Qn-e=I22xeC9Dna&W{8!2gN>;Jk1C>cU;$o=Ge4tA=K z4~0yK&|eV<(+*&lkmr7-?y@0XUi(0))>4r-B$z=R?r$r&%u$%|QPu#~^*P+^%g)Zm zAm3_Vlfjubg=1OYBX3A09(Rw29I7Fp0!V$154Rx$R6Y2`Ehjh9+baQ(G(q0?$jBB! z&tq;k0qb_JPq6A52RiL?EE%hO1;nYAmey*;ukVoOZaz>~SAUF0dPYFt)~#D0KQgki zYCi=qkD*y0LfxBOULMIYlr(rF`@jiSC^K*d1s^vrLf+6|h8!N#mwT%v%8E`Aim=bo z?j3`WkdR#ce2(~z-F zhga3?h$+a$NW~>SG-zZ6(__BJ@#{wrYCM}!JXhXca0B4o5c86~Ih=QLVWBxelnue8 zNcaU~WP4@ALif?J$%M(#!7pt{1_}z*5NjH~cN=SKC(2i=UW?<@6k^u>MFnC#P*?X3 zc7FB2Id}e^bqQFecQJS4 zQbEc39F#iGey8QTX5F3f^3$gWFlolsKJj5;IzXF%$$r>!o@q@s*y8SZeOlYVz#x)W zx3Qt&X%Cj^)!&zhV#Rqk_rrjS%bjP*^a%dB+W&`5)LdxOg`*S}`OmIXO!n~fG%k0$Z187% zPdnj>E<7hw(}4UZ4u5t0{QM+r``HBk*^TJ)H%lESfcm6z{TUMvhzbmn_Hl(c|Lk8P zE)kJ@5X(BL{yb24x_08qShdODTl~Ktba)HM?3^4N_33}^DF~2ZZENd9BIF{-9g3e) zQd0q!1!%MXGiY*1O|f!bTf^tI0OCW$HKdqt02j{ zC>tYyfd~l+Ym<}hDl2SbB#J(KNUAno9=seQ9?*P$xrqlZ%L$)mU_gOHKh`rclJ6Ru ztef`j#n850=fHA_@7wCaC54C2Uc?&0uqP)ccY74&VRHtjR1fPF5L} zhrFsPR_QO>6gbHY5_E>#7;cj!JPak^il8!tC)Ry&e#hxD_s|5; zx1VAYkq{u(utd`D1kvauw&o*4-->V3dr$GnLUtDJd1{W7-Zan>DBoC8`-SAPhH3vD zwHA`Uzco+2y|suTY@@8aU3qeEc``}0?d+UtV8S>(@bz9eD;oSs@_*cH|}(0Op2ULGtWCLkCmvZR;y-U(t5+v$`| z8l9+lgdHCjm%;^iON*b)4x@uU0SKBV#Y>ZuV%F_ROPf-VoPW=03Rb_@&!mToy$hL% zER@G;NvHI`w`K>tqZSB)so0dT8y=yiqB<45AmD;G0u2brQLny0c1XFtTDd(6*G=VG zzm{h#Co1|%=o|I|v%$@qyZieZ8nE^60G_RhJqb9&;Dag3F!y>^FYNdK@~}0&KkAcp z)3ffld6FbZJYKH~exVWCfhufY@6uYZ^RxQi>2a1*R<^?DaPRBauZ18HzSZ}c@8sf3 z{)&pHgj(;uGQ10w@LEE2^e5{M4rq%sH$duz){Y46E2%QKW%cFE3g|z9x&_)r`qPw@ zQ_^=z{%ItcRCp*&L$@kv)X2!FwDoAb7JINVQo!))r2RFJ3$aeMEM3}i`$K?bgWkniwA!_BrqvjO+inVF|nR_YTNJ42tb!gzWP?t`O#6-B zL8G#+=w`k{byQSTKhq?jWQeDg@9{FcIUqaOgG6WE6La<+RHI8@?J=-L(jiwjoveIo zy@Ad|++ozaEA8^svs8^J<%<_}%nS?$Gp@YL$RgznVU|(8*RfDYG{C{f7btNtWcT1# zo2314DU>)g+V`UC+K)@cIncKxS2zfB3%v{295|!1n z=8?t%g>*3A0>APkG4Tub3(x%JG)%bvwF7E88?AcgedU)M9gF(10v7crqqO=Jjx)jc&f=GZ1_M=l6@o*TBQw$Tr{IhR|D@FB$XE7y%sXFPjhe zBR`tJ(oEWrE-~b!Q~}JI3zdM)t6&)3RY9v37oye4$=8($t6^`XoUKGI`yZ;l+|riO zg+V6z>;=eiJmh8&9V2dYp37DWD5kBl7l)m)*ZD4PrLGpJPs*4?dKK0E z{+5?Uvw$n=iQUjmP1k+*`3{SF-*08y%#)W}W)gq7eX&_Uy5)oyCp2T`Y_|_~e=YIG z)0BW%nVl-DN=A`rKTz;gVhx01D4iV);+C@@61usyCK>ToJ$Po_@wVZOh(&$6-@;u& z!e?4_|LWYS#az&NaP{g{k*@<~1bys)^Yql~>A2cyp7dHqcJ@{$4Mqb|$Y(X7Ep+@* zPw06CmYpIiE?g-{?Qdom)~24G~%p zPo8D{W2*J6q1RrV3!dVq*n}GyI<>ndb0~_< znYx(|1E{!$hllG&0fB)w$(^fpHy}8eR#S6^SBHq_TAC^*bo)%;((fwS-b=>}3=^V$JzueFJc`Q&B- zE+l>wB>va2UI=OI(3M7^TgA4!fwc2$S|INgUYqY^$~BIXFpNB8sd;KSSau!wq=9R8p1!fRWpa3ko28{y9 z3Sv0#1HU68J}wd#+0sidPT1bsQuBjMxsD&NqT9Aa^-1-=H74&>o7LeNxI^k$;$24U z{1$a|Zat=Y$O&_fX=M@@96HNT|F@=P!-_Dd1>rM_F8cZ(o0?QTnec?T z@HD8Dpx9oP^9C+c=m}lUlz3gT)IviLke!`>iC8ptXX$BoYg<{(Kv|u?7E^q^%KL#^ zeBff3Iu>tMsOSiAxhNI;+TZ!pAHB^uNMsjt@jNj^$BENw5U3W;#7eGG{xd`= zfkXhn-(L%mpk!p^%h+s%HT{!1bQqnSCKU*WtHuy@zq5-yuTOYxEL?b6v>-{LVU=Sj z^h?c@;d`Qj_JbP+PQPX@ON-2YuXnC{j8AUe003@{mTzUW(rclcH`<+a+TZ(lFv-Gc zWmsy968}MGXQwqefLX!gWU)Wchm#h`|FvH!Az)yAAjlStU*s?`$8&s3u?FKJ_+6p2 zkot_8n&Ox$(rZJH4crzwu*dKWFm{{Y@4BKuE%w-67?E(V##gkHpC84p#@7k^_uB+~ z_&fM`1BKSf%dtuW7R~Ng+;%Q~zygs5(<=RLO@naSk5xt5+i&F&VP z88U_=f%g|tDkFXi%x9icQ8nT|FI?LwguWW|`HG9|7N=>c7-Pc1lD>HPD2~Dff6w7M z7Qzik^#2Y_@vwMY{tk>FsU4`tZ|uVpn+;+H8PBPUmo9ySOK@W{xU(=ekL~~PVK(%6 zVE+GyR}OrJNYLN_9=P*~_c<#$GTZ;!1#KTrsM&*htNMA~Ie_-;2( zl{g(RH5mS#bsjWe(cD|*Zs5}aRt(({{u|k0y(|6skDbbbgM+~}1l^^Z6C>sBywNK| zC82T;q5F`!3W_nH2EcTcfVxJmr=+AD_^R+h3+jRmcs%0y>71w#0bOh_FR#<5)6r-& zXc_+BZf^lqxCcDj&CLz=Tu@L@I3>C3~e&aJUH-LzOrNZ`K?Lz+-FD$NyYkq5Og$j^yN?g3q=#vxJ0L-sLNy)sCGYA;Z zI=a`cH+uluV~|yC9*NH5(VoJ)&mRPsZn(5Fxq* zg3B&Z1QKX-{*a1d_kuyL-Lc7UwZ97N9XAppBewuzz9&|kf!jw$M((b~O8u?6t5{)a zOUW0WdwO|woxggOYI*?hl1?+(KPCF-Pw;b58FtPq#Os2x?+p`Zo?L<4Hr4YGR8O*R zxabSc6hdn5Li>>zx1{@%jfEX^bJoRgix0sZg_R@t@DAm2bs2Kon0r&RG9Zfy)U@Bc z=(Rg4h)Gh*Tixd6D^7uvz`#W(LHoR;>hJGQVJM0U=ec4IlWA^djKk(kUi1BXF2*;M zpD+F#BhJourb;@Dw#L|ivG25Y=fZEKp-KXMh6m9`ZFoSuen;)pYXlOt%GZaJjlsub z*RaZQE}q7?o51+s^6Y!F%?Kr@@@#oGCL^$_DGoKKy@l<;kqPsvqwN5U?4V9v$qGv&v67lL%ku(Weppqd!2W7hohE3(HZ&BLZUL zSYb0PXf$jr_Js=ZIfCVE-uh?i1N7&M1BvGwRVWbxg#IOT5-}woWL+rpU>cG(x%J@y zI1VY3L`t>yrP@~zNh*&+2$>nA<-N}$c%ZZ5s(X6wL7r?3V(0=r2vP$O*uMAI?}1d} zU5<5HT6z#1YDep|xZi;sV&r#S4rzIp@Hzbs%6F5ECD?3jiU`}-E&w&HM0sWwmeG8R zFF=gJ#OMJjeS3B6_*a|4{>HqR^Ngksu7$AUcnuKvPLrz7^g)bg`NYM;Pt5Uj!-=ZI?Nelg)|0=?F+8K zQ+ziGF**#IeHTPQVC&r432~FtFCekYNJ&{*S*_DHvVqtWzu#q|TS|1%sKTS8v5{Lq zAUIE_JV;q3Hbjc~K@~G11-0n$%a<=ZfGldu@1FX?^aeO{NkM_=Ua$$J$m$DjVcZ+J zM)S+d0=~7+M^qj9a+#TTA?^I^L7G4cx=;XG1+;X3r4A&2^pW0{e9BZ!GQaPuIaR3` zRDHD9($*#~Oo%`X?=Eld)0%q~!yy z+y|=(Tk01rG6n5v`UDu7kp2g>(Aj(#*XBL>1uo^&va-W%ZL4|JM?acHhI?g>*4D%qK%RTzUq>aZD1*%)?ul^Y{05_{Ad)0 z6ejy%Jp~d7G{|El>|!?TKV**V(0068JZn%}ijn2|`(g60oJpqkh1G*tbp@{xfN&3D zigs)mV$hp6^!M&9LdrPaolWd4ujTfbj7na<8(Qo%S>Su@)4XGwm!RM~3J(SZ;xH$M z75vwd;8<->zHlJ@dl9e|PwxPq03oE>bMw7E&nT%xEj(_t*u!8k?03|RjM9J-48WLl zjL|KxgLZh|(J=|H`fw|@@FchBpR~tRbaZ#@>?&`6eFX*Mr|a()o~IM2E7C>eBqRr`zQ-+n zY97E(Ol~tyd4vdwDF_QnRV^Mv+6F~)X|RZ&@J-%t`?<>uV0=({K!%X<_{nCX=g}lm zJ!?&%I|GYr@X3km8|{<{r_MR3tHD`%d1dA06mv_V7M@P@{;{~YKlPQmDmO#t6mE^Grlu{(efs+S5cj*%Nsz+BuzjJ&0$K`i z__uH0?v%Z~M0uiS?0wr^5(d%wt}Zd~hUHk6?q7VwyPZ zNlM_Hg|a-p7$`_Y3HNlkV^Hdt45)C!efAO7BLr!K6lH5?S65dT;Z~<3g=K04?}Isf z@=NIPbd<@CH0C(L&tn3=@zvGUA3vOq4jxo#p?EGM^)TOz^z?H}OL5?v>qFrpD0Imw zZtlT>fy>dN)7xXdvy0)6uyAYqLqpT0#z6n*sWv5}v4g9%*_f)Ts=hcO;IlJAexHE9kD#S;%NO3TQEGD+s@_|863(kVdbVKWsK6bu&HP@A9v zc_`3MW(qx>**8C8faTR}Z2sA?GbI6f z4RSVs)sAS?{v~alCy$`V24-GLO3Euws=F>bupztvK<|S75@q6(*)NI9gCbD8Ib7zN z1-T5Gx|eojMmF%U#!VfF?Yq)~H_{W7u3%y55P{EncWcN2))+bmHGL>r3be9ynrfXD zAp4!*uW#{jk_ezuw8Lsb*kM$UJnUmElr^V-Ku$T4!T6%08PJzK+rh$s@8cYtocHlg zljE>qlO|xeuHxsMcW-fUbiy%y{Awt7E^~mDn)^^^+0Z9HfvFPg&O)4NI`N)h=q0n2f`-Xa8s@B2U;tH@|1*w7rR%F2yDC+bFqhryN&OSlZ5 zoQ2#Bdn@+ry~xfg(PDoTismes%T$k}VbcLu__2sSLxI*xNlzzd6mM#2A*Q1z7NSt> zn3zrUWl`{{c>THyaL|nXX+rLU+yMgf+E7EP^6rw51C?p^wYYg?8BgIK# z1)vTKu6=lL0R5!KK2#UXz{UZ1|Dl^#^zmbzWXTjIfuaM*N};>IW}#sX*2-V5HLzwx zlHh1`ynlafd%LZ<83qN$)CZ@eqz1rnBrN>1&%}3n5v_)WqPYQ$FW7x1T~d8OnqfoI zQ7Dc=-ZB9dYV7@We(AFli|BcHN_G3uiuvj3vrx4$#l%(7gblfn56PH`DHhN$oGEyn zhn)s%(BuJ)F=+cj(-h7KH1|EKK%wZvPHQJ@fFJ_t8sNm_BBlvT!#(Hwb!ey@IQx!P z?g4@&eCAIgxL;u24A|)z@QJSDPLP-8jsx?spCMRHI13kcz^78N80oh8`5>@K&u2}4sm5;MI-A>N)*aL^b;#9zye*X$mp>NYA#Aa zd$_7A2MzQ540yyA@ukvOOBXie^&}<{nwloPdp8LWyDJ@*sEFV;LLCBWb`W;!mr&MU zu1N?S3L;kD3*S>icCe?m$Gk`JCQ5a<2#uyL_) zbbcCDc@KcK2TWrSP&12)N7$%0H~<@5-QD3}jfb)_o(Vn?5kU>l0c)R9rbvUMl|CXNtO`}mvs$PrF)*@DzE~&04f*^< zMcmf|q%>#+LFb`i6-QWthKA_!qlf-ao*B8gh*wkZy<$D4Lt~{RFo+YIevgxaHk&to zlCa{VcR$xCzp(;leY)gOpks|Wf3=P;y{*!SIg3TZE$C=~Ta!mhM2^di#OSRL;ici= z`iI^;QjC5&CLt`xhFpR^5Oi@<=#>%i2uQwg+UF{)8K9TDW@bvhHqq)CC&iTBS?poe zQ1H=fUPK5=0!$H9{g*H0C9V!VgVQg*qF%TQns|8}=C<6wq9S>zF_$ob<;ToQZ?T=> z-MTzHA_{6cgp{1|l%SmvR@KS!sWJAAkqJ_MiyOFFvHguXq|d^Vg>g|If@+`dHz`ac zoD-m*5L8`1g$4~Fpq4te%k7Pa%pl(jvqqx3ngVKS+G0oDihgphFtc^b$vx%L>Qh3UA3h zIhb5ZV3G6MSRSIIJWG_ui!hQ@RaG&U`@D)}FFeaTnEssnnGTD{TZG5)q4&Pa+@Of$ z#HgF6UJ1(x#ma%QFG}+b{oM43{cOX?LT%TMe`Q69N*>E?*IZT|o3X6D{%fx?vXhSZAOnledps5*s=oLFCIpPv1Db--RzHTG`xV&U_ zpkw=m53$>s@4e$oEGnl}j7Io9G<6Vhl9&?f+(nAPSA})89jFVc4nbT9(M_?Dy2@pj z!grja%JOeR5g<)Q!$#>o)Qt_I3;i?7mjzy^@!U!i@3WdOn+CUEXZZnao6DM-ni?9^ z8jzYbx#s8R&DD-5;Y|jHuTe9MgS%5xw`~ZA9$@=8iu_TmZmw3IJ&S5btS48}#whkY zH@)o%D76!0)w=5;ucv%lS5 zC?Satw-^jpx-+|=mVNA-CDNrvND&pi(}&L}~_WBIxFUqt#Q?CUIpK+}d+rx%DiDXt?UBbzO>oyQLa1ssb!b;2%OYO1sD zP(j{dV?TQyH0~$va1ZB2>f&iTYlAOD7fxKhK|Y)E;VT^Uqw;#kiO~e$^iJUCR=vNc z47@X|Xd;DUV-Tzhe(R!78nsEo$=HLvA(?=YTX>01pZ0d?W=N5&GG)z^0P1zBl^Po* zqehB%iej>$6@o62e?x&J_QVrEX1?<*$}i-xtfyxR9QUaNRjZDU_)mJCx_&d*zX zTX6;OWA5OR0#yVGJ9I{y)z6{8vh?_~g@wfhGkNfal$wKiM6Db&E#S~8^KE{(#Bj=h zV@q*laA*jqBrXn)tjAAuL|01Yf1F>i1l13e#iaM3v4H97$5_?zqclAbeymysx0K{t z2i+dOfnGJ(T5O&(Gc(^ZGU}HXwl3E2vb=NWi*c0Zo3ksln-zZ?zRLI{^fg46FC%t? z#a~+}3@R)>xe#PJ!#LeXAKU@ge&^?5RzV{Cr#*v%gMEG5kk`%0aT!*I>kZlqjz#G& zAvr_E-!)33R*Y&bNo;6<)MK1KYnhGxTwGj`V_U$mTU(n9hR!o3{>S?ZHcAGDbE1!n zZ*`u#wn3?AvDkPo)OOr&YB2w7rR=ZmZ#}>?icb!)$G;InwbN7q!-b<@=iN~4i;`ku z?=G^^(a|w78sr*%g8Gq9J8uJ;;GF6u6_u`?BqcT$GSBNSDd2khx9phjv``Hw)5S$1 z!((IarN=l%&}X8RIb9BCPN3Co6gGlC_<-nY*%M$90cO3$OgMyjFgfDi0BZ72^GfTb ze!od;mvR0nkvI=;nE11lJPk%GJFiP}T?x7^aLi}zpsyRJy}pr8=z@Q5s;^a5m+z;C z`x4Bkm2Bbd=l4Lzy{3^o1}-pQ5_(A8U9W~se7~H1vu$A_vX%$S+I*xQJu&0N z&$SV%aP&stUeE{}IstbUz{_^%Xmqj@k&#t7PWZ7&ef~XxrJ|2p1#M39?GYs1ST>OP z{>4e@?uxmJ&}!WtYvz|wuZt%Azre&9SSf;P_bVwWDK9T)qePgC{+#Qu9sb8T)QN=~ z5z^3^s&Nxz#pUh)F%gEbN3WF<-*uLouV&!Yt5~38V#2tLfj%}ZJx&^Y(4$5Yx_2>j zh?EE~SZb~J1T(6b2~G@(OG>5>knn43Xn1XpxcAhZ`KZ_ZF*TLTJ+!+UC+rLR#l_y- zTd}LxaG4dQ6(D7Lu1^K%zuB+5Brw0z7IRj^Tb=1`cx}Ro+ojIb_mu38o$Gn9gcVB_ z4vrmlY34Q}3vg1q;fz)U-}S)C>(>mItXUM9%E0^Ck9}dUI?snNL)Z#$_n(+Tr=~F| zzK|f>5WU--naQHCl7BR3waI`8#L0OT1M@v4cm)x^|L!U1x?#;cjWilSulL5%8eJ+f z0;A(Pa&O73IqG=)F>&7=F1>FNW9V;kS&$PAI)U%cTKxIH}u3DZO20AHhKFDSh8U{#5TEezYCv5S<7;@9#Xu8 zgZ_3qTG!h}9)Pg};+aFB^>D)ctKZ-YF7cbtG~hH8Y;v6C?)4iyn)Sbe(|)dPV#W%w zYz|L;eN#I0)Iirwh5f{y6Eg4ZI#USGvdFkC0e0tkT`)LIob=)L-^ozaD7mqqw^316 zl5Q6zu&ousy0ODOW4P&s*hYIpLO4w{j%idXn#Hm|vQq4RHFNfw>*m7seAbw?fai~; zZN{qPKE=em)NASo%Y)T*Q7o`GPsprRT5|^wZMVmMB5=~{ zzQ7>9#CxbiYFT5Y_b+6>{R#4|RbFWVLmD@t=iXOA!fw#lwYdD|<$1C5Ze+C)vqz5k zli&xn%%1|`F5UN9vC;4C0p}PoVc_`Hxzut6<=<4l0y0E+J%pkW*ykX{eUSJ>r)c(- zWW7A)e#RUpdcs0MuR2}9{JpOTZ5Kz8j}V2Iqr*fP(KujqpwgS$$Lai3HL#)7!+G-W zPb%l<6I}jjvrq!9)h%&O&UXOomK@sy3-^HJ+@vjka+<|N`f8`4bf+-!`)warIL*6G z@GYf3+OJifpujA0jMUC7jZ!%s8vq)@0=0^1s;2B_op+dOptgnZ8INs&P0;I#M4C`VrrDaE03bV}2g z5G8JFa1f`evhN?uN1Z4&NDlkg($;*hEbmsp{~&nZV!ps~E<)d1|KUW4uWj|gepBSK zQFq<^AooygX(|?5Q{5EW{CE^+Yjcy!;>ET|Q>1u+MGG+V_l6}a(CcUlgj0WKOsZsM zPJ)=m^-j>BP*sQdYz$7vBkEA0A{Qs8GB_zt`ZPQHj9{yax6Pu2ghXc-D*9m<;l~4e zYhp1l?O%AUvPDQ2GkW!64=$Va7=N&t#9355YfxJY#od82+HEN?*oVVuxQ_YJPfPyC zR-Y7%Kv60zF1D(3fHFaIRyyDO`agw5XHiNehy%S!zVuC_)X`DVvwlPM`uBb$?)K&a8JlsO%9IFh%cr8+&p9l(l)?G$Y%%5v9czpocJdJwZmKE! zKIKd&mL5M%LMz)x4aVnz@>pyVOM|y99I}qSv2dpQm>H)Q(06;@faCw&qocLPp$=O~ zUzsnx)XZJZLS-I+b=~}`rL6akFfXs#9x3&MQ(qpo`}>qD)yYXoMVG(Md}*{2kx7X5 z4|q}3bC2MxLx)i)dwtXN1P2gxHG!LHO>(=8E5oZ5Brw!`XYE2ChIbE$Wp35wh`43z zc&p^0I)ntdMXznpAj@CIJ1)poR(3m#Uo;u~XxrBO$?$~Fe&TA%ba#P8pLV@__jEj~ z&yE?iY+WdzK`{&(6euQ%A-rP*8Nx~^3eGRVovs8$i=Fa3=loX*rWh><(L3Htsv~tH zX68RH=CYb9!hO~brhkQu$S3>H%nVg#Uf$1T_I~)#S^VmXl=Do`^XDoc7c+`mV=C*5 zSK78%WL-1}=`$@k=~*9w2M~QiNF_0$hh`#4c{8vR4)C+aEQxxFo~wS zfc31iRqJpeVMD3tn}K*D{mCGGMq;?g%Y>Km=EF_HB*|%8->^>OnG;M?auUHg=J8+o zoD}w5?AlnSwt)jb<`%l&M$~->qa=1eV^;lB4MY1*8l5yOFY4XoV-Y^X&5tyO$aQGt z#21k!17-&%x3xU>B@fT#ODUG=Qvb)Uuh%7p?Q;p-Yk?b5Fhn!t@4JVdRCpgzu3@pr z4gI{!wlRhFLskd%gwLtSrjMK#*b;^BqX^!YtBzA~>iwF-pxUdAEXZSi-!~T28`xSm|~UR=qHE`9tQ35gHP14#bp05eY=F5U_Nr zf@X)pLFnNS9H@k#`3tilY?ts+|8)7EV7mOgiYU{#H)q7Dh^`{^gxqAo_{=yp<=8YV zGc-xajvcn{TQ=Mp2c|bH6le}Kfc2_y|9&G}EFByQ#1#5sfn-=U<(|a6J0}s- zac4x4NFG0l=Kucukj#z__jfyu zbp3JA$*)wVo~xTtDprwUD~VEtOOae8Qbp|T?V1JOcfN#P_YtRJ@kY=IZ4sg}yh&kBXNX*f`(8FNo^FQk4TU^99Ch>d};`6M0( z5v}5l8#f@Dp(WC$_XZE-8~U?%!wa9dl|m^4Yg71%85RQcqhu_UunVmsB@-S8E*}~k zmgl6U%SubL_4ChXOFNFE!TwNLS^4_4uA*WMG$8bM!8`^%&aC^io_6B3`5!;t8z|tq zJa+pi3v;ykIh?HibF|ug7cfV2l+f|PuJcy-e;ykYR`j`LzX&IflHyaGJRiZgBhbZu ziMM`Yf>c zJ_o&P28|%fIw-T)jBV~L)w&lw!QI&J)2i*gu}aS#`J-??>>l`LN0H{7E6*B{eCK8? z-K>|Dwcxc#l#XYsshx0|v_i1C6u4U*vGL~TG z)YI#ON@a79m-aI@I{J!*fyjRtB3y=Tygyhf73ILUxU`pnZvpT~xQX6SFB}iM^DTyJ zOYJ4awz{E%c*6UC19-Q`j~@#em4>}})1Q4)EbtJI77lTn$3urA`UcJOB&|1oh_!7y zL8fr|i*M^@hC(NQWF24PUU_;iqseyA|3U)|&WB}ltY8!);kRlAo0=f@>d0cpscm73 zLI;C(d8)!qs|+)?S9+*yx$^YpzL95*nsIJCt-fvHgTx2o%Hbh&%N)^Ra$G_-ac(1( zUL|nM0(=V8g?a1i(;Cjs&ILUGLhi>|U0q%91t+2)Xx`9*-ftfCc5Q*tY+*!!ENesX zOZ+Il-5W7bR;=H=;RXg)&q`<}(PYstP)qxf5ucTRxF@ccz!W5iFwz#C*kI20q6(&F z6cD$PICZb;LaM;ZNpAUTQ<8S|$>uJo_FeOyyz-AhYY%L#zwK5%Yo_6oeBH^ZK!18-BKgSVGBwv-iQ7#S>vvRD2{K>Bba3m7#jtlC zs4hJ!zI6CP+Y<9+jrv3dl~+Ya^{Wrjs7ymI!xF3ssg5I`M_Sd46(k3 zQ-7K63t@0H-i!TT!Pl%`l{MnwRFj!228{~*vV3N_TEu`Kgm^@dO;;FM8>fA<44YN*lnFB zXTk9Z_TseY7p;6Cai{2UJrq09pnq7s2k^Z+h^&i*P@LG}+aOq+J${)+wIK!`kt$ z16cHJ)0L8qs5GtYz-N?lv}5c^ELzc+rwft4JZJsqDC|l^@hDFXtM^Y-U_lS3iV`$9$+ zE?IRcpX5`fL-MCTD=}h=Q(4Q>3tKehr3#$fl_SAfh6N18v8!abOYct)O{Q5WobcTr z>$k<5VJ49zO1|5~))~^qF1W%oM(t1YVipo$~XO700f!6f@H4)BSd9mx) zZUd9o$~iT9x=$?1-b4U*oF6r>c-f`NaX>+2-NHq=b2ex#<`E4B&Q4uSmf+Ya$9aoy z-@U^Q7s^#KUhBR;>~KVdB|+rGM&NvhRR3}790?r!2qnyrvj%L-!mHUg3=1(qvUD!0cnolNr#=H2Y`zr z%HG^KSkA!346KZnfTt*c+x|qQq`25;C;+E6c)^np1;CY&-*ht%qyW#BTV_z$cv*)b z30Td4c1&zO_ZQd$Id|O1zVh#{ufV1Jr{A-K=R|nr*ZyIVJUr#%G|4So3=9ko7l9jl t89;~EF)%bZ0jI4Q92PnN$pr!b_}4A8G+?Zg$O3X1JYD@<);T3K0RVEPt&#u$ literal 0 HcmV?d00001 diff --git a/src/main/java/com/penapereira/example/constructs/chainofresponsibility/README.md b/src/main/java/com/penapereira/example/constructs/chainofresponsibility/README.md index 3953a2c..8ef4061 100644 --- a/src/main/java/com/penapereira/example/constructs/chainofresponsibility/README.md +++ b/src/main/java/com/penapereira/example/constructs/chainofresponsibility/README.md @@ -4,6 +4,7 @@ The chain of responsibility pattern passes a request along a chain of handlers u ## Class diagram +![Class diagram](/assets/images/chainofresponsibility.png) ```plantuml @startuml @@ -14,10 +15,15 @@ interface Handler { abstract class AbstractHandler implements Handler { -next : Handler } -class NegativeHandler extends AbstractHandler -class ZeroHandler extends AbstractHandler -class PositiveHandler extends AbstractHandler -Handler <|.. AbstractHandler +class NegativeHandler extends AbstractHandler { + +handle(request) +} +class ZeroHandler extends AbstractHandler { + +handle(request) +} +class PositiveHandler extends AbstractHandler { + +handle(request) +} AbstractHandler --> Handler : next @enduml ```