From d0bf45bb8f8449c46b5b07a90a49bb6c6d8eaf66 Mon Sep 17 00:00:00 2001 From: "Damith C. Rajapakse" Date: Tue, 27 Sep 2016 13:53:00 +0800 Subject: [PATCH] Correct wrong diagram in DIP --- doc/LearningOutcomes.md | 2 +- doc/images/DependencyInjectionWithoutDIP.png | Bin 6303 -> 5896 bytes doc/images/LogicStroageFileDIP.png | Bin 5885 -> 5928 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/LearningOutcomes.md b/doc/LearningOutcomes.md index 6a54bcf04..258a26e8c 100644 --- a/doc/LearningOutcomes.md +++ b/doc/LearningOutcomes.md @@ -129,7 +129,7 @@ getting the `StorageFile` class involved? That is a situation where we can use * * The example above uses [DIP](#apply-dependency-inversion-principle-lo-dip) as a means to achieve DI. Note that there is another way to inject a `StorageStub` object, as shown below. In this case we do not apply the DIP but we still achieve DI.
- + ------------------------------------------------------------------------------------------------------ diff --git a/doc/images/DependencyInjectionWithoutDIP.png b/doc/images/DependencyInjectionWithoutDIP.png index 0ff2790e6d1779cf8414d74044d9411b6a34bc70..42436a7d6f79f75498df64ef0d8376811782fe22 100644 GIT binary patch literal 5896 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 literal 6303 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 Wuq#sUnxX#_03A(zM6tT{!~X$XvuGj! diff --git a/doc/images/LogicStroageFileDIP.png b/doc/images/LogicStroageFileDIP.png index 682260c8c5472736a21b146c1894bd413eeaf944..b1d9b233800ee881d3667593331f2353c9c878fb 100644 GIT binary patch literal 5928 zcmbtYdpy(a-yc%lL{gF*M%{OHlhZ9!j+K!+REWfgG5x}j&3UM9O~xcQOLAx;lF2FB ztdX2@Si2q8%p8;DFo)$hhvz$~=k+|#@AdoV`D3qLpYQd#KBwz*eLnB&x_`;WLPG4I z7zhNCusm;O3jztTf#0#6+kr2N9%}D_KcOI7i?hO}wde+b_$A=HQxFIwD=qj5d1wCv zECIKVt+4r#U9`lp$1{V#oz26&PVoTx@1#nM&59Yo`1jLw%UIr{0_M3Rz!J}spKvkksqt?eHYZ=b|A*f zJcRu|uym*fwYQTX{;`-NCb5SuDg`x@HANO$BK<%)r0YhcrM-T_dLnLL=0SkzL>A(4bH4x+(V7ZyBne0fx zCeu&;m`wp&vOE-IHkp3%Zz=pPDR@0`{J>jBWHF>GNL{$V5xGcNh;sObnybH9Uc~+6cyR0mor2)4`>sq{%|)%9?gx~` zYs4W&15doy#`zdOST5Dtb{gE-^(Z|aQSBdT*glOVR_?^(Z{Nlts=Ey4Tdaad(#FK5 z!5SO)SWWo5=W=+oy%zd?`Z%&Klr96!aiFVTvr9bZwC}5`4qNI=lq*$+J+B7>+~C?a z(H&H*+HJ5s$Ppq7 z@6B2_N_Mbbg%km4CUTH{&nnc(690*!^jk?vvodK73>|_Xfdi0-q06|MRe^y>fCvU! z0wN^O0tlok0+eGyP^*dKibZAC?6ldxU6b?<8)%QrJpQqsBc|DSnT{$m-JPpe0~{nq zi?C4waYk@1j*5#E?Wr~&Yh>sh3i0DnHCLyt+f7*I-n4}oie&mrY3PvPTmte?3+d`@ zrX{=UeBLkA#VR}EJoR^e7pwe3lU68T5OAI*JkKCw1!wZK({-&MD)0QTqV~GEW2iPR zo|q!~gZ*~hPjdhtzFT-#jvYIL<8MfB%8_DocPvsGqoX=D@SF31IF0X4MO!!q{1E4| zsr`0c9C7fwcLcTSEpdCGb>BTP`@z2bFzL?s5dCDYc)q+RKCz?{27@v5Hu�`ny)k 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 literal 5885 zcmai2c|4Te+rN>W$Qlu{maWVngux6dgQz?Rm2EsjXbe#kDZ8Y6ph^JZ^};+>D*=+&pgG zwFQt4)_0vT;FF+%ot=ZVt@pgVD*$leF2Xgg-s_tm#D(&W-)daadd=3UD;*iv>7DxN z+5z3cRl;1FGeo$)+!ze`YH&OE| z_j>7e{i1z1lF_v8hR0%UG$p%gh@In)>x(Hi+<3Hbkp_@MxBhy=Kb z-%|Lj#(x{W5=b*oD0|1lW{qhKSeMTQmxYLjBbt0`I@&NVmF?2t?a<&eWHVj!#Gfv~Z z3#n!yy>ceRqUPww3t!AkPJV1;VH#AsuS8;HCNV{z6bh>XX`Bkb_LQA@O2qN(;euOTE!~xck|kFC3Lmt*!V@YxJchyI|xKO`c=Sf&QpKnrrm-l}fl$G2Mv;zCQK) z2n#r-qqz@rZUN_7Wh(m6;KuMLi(%*c3o7a>sKw5Zka^F=W`j6S7?hJ{aHFuVMfFj9 znx@b*PGWgd^-1@zfXlRA;v^3GQ+wqr%6e`$2)&KLg>T((<~1$dPp>#3Fj*~^I~>qSNykAu9e;6KT7BN7I9{Wk*cWV-lsFTd_Vj|j z8FcA>hh~wsaWd)~@Nm)!f!`|{*l46k;Qm_hG^+7ph}c7CGZZ3C7m8R*Q@6icX9VRN zW+GK?yw|D~46wGvh7ku%>`BnK${9V5apr_~Iq020F=xDpbijpk&v;06a(%h8=lU-} zJ<+_=XIt5gV~-)FQYx*nl5qrwvh0$$)!CxHC#X`F1W|3>l0H8LHAQ}_P9+p!nq%KI zC8AP3uJ}Qq9Xq_^^lp(hvnLwru;nOE`d;N+l+m(3(rsP4)Vl$9=>SN;-r^b0#at4R7hc0FFm36spzVd6>1 z@|wv$;c81SzUArY+`#qK!M(n%Zr4dkh1f8Ammhgy{#r4Qpmc~F!9}1SXYS){@EZKCqml5Nn6;_KFlDz53u#c;e%+FTEul{wo3PJuOVWs6ua`H1FN_ ziOZS{h`f0ywtISo70FHDIrDYjytqV>|J$#(tEb}hJM1r#+$w&EFYNRVg)+yAg_NGj zn@_?omcLQS!!jqL+EehQ0_j;H($T`ND%onp7kr7?Xou3-1jf=-a_4GWf%(U`{>e(* zj&@B#&UIb0)bXYZO=jkwqjW2X+gKAyf`%k3L7k++XDTTlwd}{~iJk7d#}teU?r#`5C4P3R2Nk)GWexu2Dw-gImu~)9ZyBcg%q1$DcP={`aYLy zsKAKjMixGr>7%)&e%^a9r|}NQ3z&RIK;M{AJnBdSm5-DV?=K11(37V4{zD304%D6m z{*-{JCRCZ0Ec=r&P%-ObS^)G5AP8m?a&`a!aEAc6NdN#D74QKM^ zpe9KP_{8>8{%h^0O;G;o`K<+uVa2yl{2`MuK!hl~BfMqQ(*Dr;P01sZ)eS8XXs=_) z&FVK=xuCvh~-?6|Wt1A;2&8z)(-LLt-q_aU56U zNlYXFmN%+&&fEMlpEbrl<#fpn5?uI2S7Qdc=ejZzu*#Z9O83z{EB&Z>I94>yWwlUI zC>6#2ULSPUQ@$?fda6jf8X_j<%6W#@wkp$7OKsiM@qpK-u!8b2`rd&au{f8f9ST*~ zQ^Jm)B19(HF+1Wt7`Ve6Qa z$H^p>B*{3JPAxD&1GC_44G__2*LX6F2^4KO|LnQ5DhX`FEmW}5>-L< zzRaDhV2F*;vmd0wgZPATPLd)?gIW+_Mj;KSt+(OST03FXS_iA#Yfg_dS@iHfM8N^C z)x+)lTf5EV&RL!8pn-f00Z$wz0N0ZH%MSzr7y-nF;D)M}Ly&+^%wPlbDHseOTF4*) zBaIvkhYfNdnGVx`^F@+h?Qs%cnzxbP3Gp7r3l%Ff7&V|ILktAnp)pXBs~fV_z0q`I ztD^+D<@x?YjiB=7cyC@QnW|$VUq%mbsilRRBSAGshi*KS{B(wUsN#5Ko~!W+)H+k&AH`wuZk?asd42gr*Tp!A)-%;ihL}HMlFAklSF+96hq_1s$!zW%U5-i zGjpXLT~)$%&x4j>(%`B_JV#H^Iy@s>49gCN8y9Ow@6N%g0CPR)Qf7K6>UE;BnSP!QPl{% zdKOF8w%uOKT;F>zt}|YWR5twasMi-XZsgND(v!YRdp++ZoS?NKtq*4VfGO^J@ik?1 zaht|2r}b z!i|lWx%y@|1Aao04A!48{RLJqOvq92GZwmqcsG=({)h!IbV1xxkd;A>{R#A+4G{fy zIPpM61qv_%R!yLoI~uV?EjP#DkV=W08sM^57cMBvdA*Vm^6E{CZ0-*q zf}QCVuF@jU?$s2WH{^mip2~RT#lz*!$;Yy4D_xgIdBY~c!YtG9a(#Njtjs=l(rIXoG_?dPZ;5@skSda z9iK(2>I)?Y-qr)%>@RcbdmFV|;{tZevaR~&d4~+9rFO&Y`PTasMQT~ugI5vi>ezra zGPwa3HXqZZ`xmMYQfjB`7mmnEtDAnpIIAAp?f#flQC#n_nXe!c_XIUC%LF^aov!Us z-{UuM{|8DUYT@~}@96L&HTe~m5PhgJJCM!Xn4&mW=4iLNrOTD1w&yo;5R)_&?EP?k zc+3LDoq|6Cf*Hlq7#pcA5--b>2B46c3^(sLjyO%ijqwUoM7)D2{mjx#Gv1{Rvk@z2{;>>~? zq)|S72^&Og?C98)so}*cvGQnj_>RdF(Z01s+z3wE#;?~}@wXALWXvF31|V zJAqm9B1%RAL13nE+`!=MzW;cJjjgJkRag>S00_fKwqN>h(fxGPS^@BFzr2rO;*`hS_8c=}DI^_BZ_@mMSefqo70#|gj z;wC%z0y&Hr;{tOi`7%rH2eW!O%D=VL2IIEM>!b-9dNp$lnIamOMX~^|I=_^_wE44! z10^^SITQa=y@756tvIrf%6fSIo&M}iAy*qW50EgLcDyJ=P3fpBdxDO<`k1#~w^!+t z%VX(wied_?Dk4>&_EH!49ISo+Rfd2B?~&ixp3IA#5;9+pfK=CEMW*5Zpu@x69+D!N z^FU>g*~k)H<t8mL$_B28WQW2zq?7i zOn@7ARG-BTCQckoc47s@d4X%eb{EP=ZBdSQTv508OOyNUWruZ1Ot`f^4`w7wO*fZj zhp@N#>_I&99d?l5lA_f(E=j~_ITe~7Yw1N57ab$;#8s?&e1PGqq~TKB ziG+;g?!g*+IP`=|{A>fT_%6e$b*j;o=r?OQ5B;0vqw;WzL&>sp`{e`gTem~A#@=d6 zDq*j8i6OqBaFgFRkd+UK8%8s ztMIG6eODnL_k^!7)zAovrmU2n>(`;pv3@vT;mqmp#^rF1qe@{ZfuTlcXwqCKepMsVU%v_y>b()Un7P)=04bxoC2r^qRpmo1{wY{`7^1S7BR-M+2 zS+j(8FQx1alO8%5p1vGG13t(@Db){6_ngw4+CxxmYbD|N-Re2oP*Z%=T8REgrg4IX zdTxqCe8VMLFa693`kTZZHsMIi9^rP1L1lNZr|gU}s&P%nIlp%mBr2FLbedZA_y&rl zTp^tHeKvSL0o>R?K{e>~OFbF-*gNhCq}(D$(#wTO>iC>1nx|f<1dGXLLNu#GQF1*f zBeYU^%F9lPwEWztS;4{Li{peKb#H34Je*2!OBij?!b==YkJvsP7Yej;A_G|G5KyO- zKuQuvu9JxReNMtO0U1d1zMD(W4T)UWov^v9rBUOo(XmTyr48jYNZ{;xu7XuiUH+?I zCZ}>O0ZW7JRdCn|Gi{AkrpiC<+Y5e@s0epUvp zeQw1=n{tNZ_$(W8Xia=tu(_}OL;!~5KAi2c@K4nQ@3=LS-MMON1m!Hgs5qSB!jS(B z?Etd!n1on`jNQD%M0GL_|K>AILxq~w1R|!l$1$6Jv{QDj`6h9b)ADZ!tRmO&dK056 zM2C+5L*<{BQlOEoRsHfk+ANTco4pNHa49Vs{4P$E$L z?cT2Ay((4FrMKb^!8gfypY%boIYnR!Y%?aw9L0)kI))5bdm4PFAB?!b^p^REx1XFp zhyHV|Am1+z$>MkQ^al&UYRH85tG*($%>Q;hF?vL?>dQ_KD?s^k`-y^O$pIW=v+9!% fZ{_1rT|LNiQJ>08$Wa8pRs$Ci`tV%Mo4)@8zgCVr