From 594054237d74a5e50cb5ca169feec8c88fb5fd99 Mon Sep 17 00:00:00 2001 From: FengJungle Date: Thu, 24 Oct 2019 08:32:55 +0800 Subject: [PATCH] add Composite Pattern --- 9.CompositePattern/1.Picture/组合模式.png | Bin 0 -> 26856 bytes .../1.Picture/组合模式UML图.png | Bin 0 -> 26951 bytes .../1.Picture/组合模式实例图.png | Bin 0 -> 13232 bytes 9.CompositePattern/2.Code/CompositePattern.h | 116 ++++++++++++++++++ 9.CompositePattern/2.Code/main.cpp | 48 ++++++++ README.md | 6 +- 6 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 9.CompositePattern/1.Picture/组合模式.png create mode 100644 9.CompositePattern/1.Picture/组合模式UML图.png create mode 100644 9.CompositePattern/1.Picture/组合模式实例图.png create mode 100644 9.CompositePattern/2.Code/CompositePattern.h create mode 100644 9.CompositePattern/2.Code/main.cpp diff --git a/9.CompositePattern/1.Picture/组合模式.png b/9.CompositePattern/1.Picture/组合模式.png new file mode 100644 index 0000000000000000000000000000000000000000..46ec6595cf19deecb97ff2eeb485b3d6e547079c GIT binary patch literal 26856 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∓A@3xeGB8$+4Dj z-R2)?3q$&5y5NQg)?6z}g`0@Yo9l^+Z!qBZkZ}=0e`MbU*`HB5{NE%XD*<~3(tn!} z1I9-zkR>CH0eddZm2xWI=%#C}@>H&|sn_<$E{I0E!Q7XyO=v-2xVdMt91K;uzRV)m z=%U+|LtT{r7NkJ0`m@=wzk?n1u`dw#0mx4z%HpAmkfU_=V9--!ZHSdiHv;n*-D|_e zA}$2mdW7>83pvhMr)+^4OO9$*`923gNNI zY=&IH7;vYXE?d_#kUv^?c<roA?~?M*-!HTirr*OQ|oP{fr-i<*A!I=OxE(9yQ`yu-nq7mel3ibO;cbh&N#D&;BuwEI(K+N9S4#f zwROR>&wK&Hg0aK%#&oQ*_Z-gSZ0W|LhqU|~sv5KOwMcQ{(JD@Z6 zU%q`HL8ao;&9|7LbU4$^3-Bz+G%WQFHl{X)PCE;_)Fmaan_aI^a{Bg5!v4`?!HJ#O`uH>{I=v1aO_>xtVLDKIKYHZB!+SoY7uTj)Rh9s_|r?}=p>N|nGe zMRS8(9of#4frK|ztKCNwCaYKu?tZ@f?TGhPb%mcy-p8|+In_q`IQQ_T_*8{t)6puY zg05}7vt@dE71any$OC+?0iV~zm{c&ks);rxL>h)oye(jb%P0<9MK0l>zVb;5uU)a%_xsr%GW4tQOOb$os?b>b^bM5GW#Lp@V!0>N zrxapY8Fwq>V2?2-6h$EREkpUYE~qbn((CpO5Bpf6p4gcbe+&aoNV_we4VxC%%=0T> zg&f_XZRmSI&wHnmc1l<$oU-M{!fKAr>D`eH!jKeRZV??RP%9L_$QsRZb&w_2_#Bvs zVm?veJ+hq97RBSIDD2A4u!1b*#{<3>TfZCA>lpV*4luqIQ*E4~n=n2u3}luh1oCpx z1wNzLsKF-3oCFLx$@+s5F<1QSNGRaT&nL>x9zb}78GlS^Bq|gSG+a7yM>v%b>jhi| zN7^Kg40ybf*R+g;@K|Dt`>G{y6{+|4vT#5t;}ZGPi^8E?V~{^rss^yzs-iJ<8-x`L zn@>vy66!4#1so8yIVKkI6Jg-Lg`@b`@4SW@T*LL!O+{jb+X_P9v953KX@hi>7322P zI~ZQl;Q0{I-|o#&QS{%4Fylw%ahT^bo6b|-fR z2xD>tdov6o5F(<+EeLB5)MF=M>NJ=N*NArWM-YpE)8?l~HXev;PWvN4eCq43NS4jfDEMX>=@XV@YHLhooMs z52?{4c-D31OgEg3HCSi+yq3b!{KxBh!}2L0qTzttjs-kZABq4?XGNc zxXPSjTU9SAl^sqP{2T+O=Oz#S40fw)<>E!K&Q3ppU4bFoII>Josr^24u{){A7OTZP zZ8xt!rW~|=i`H5W3Ne^=Y4#{R;P0Q8-TeEquN39B1`>19km6cViTEK4+X?{eLY7iKWeW44U@|kZYfq=5{+t?O`Az?G!sw33P?(+06@%}6bBRpm8_M3mBfOUT$ z{`BG9zbanBN2tfrGwp}k6o=m=skWZk;ZnJ6Ha=si14k~;OmLh01ED0&iZ;xT;6H-{ zFVTSL#(s@7@EVx<=8?-=YX_80bK_e$Ifd9OZILz>n!hq9=t{aJhv33!3(L1Vrwg17 zRaI4NI!AOIZ(eQ!xLwtn20VZKm2|QrJn^dlbpBUs404e-b?h!tKKz2AKryW|iqh#G zN)*!AzI!y+4!Z6(;SJa;8Mck4FXH_SaEuQ{Ec9ry)t z!d14o29@jX!D{R3Z5NLRXLX&VoEDcCiX>mWiv-%-?;auwLN4dxXd03(j3Dw1%S-Uk zTTloRWip+uW*`Anjj#SmOqVi*YHIwDE3OA}xIg;r+*g5&$c%Awt1Bwy$?=W&N2&mB zePFp)yeJCMceX7DiW~ctE?MOLollqLCrEh_a*l3}L(Hx)0vHz!GUKVtueS?OseEpb zML23-4U~EfC4n(3`Y=gBM&u&;3K1fza>9zrx#IeA!V_B)nl&i+@M;s^*{&;_>}^MT zThm{z$4il`yJ_}vuAN=?ja@&5cO$Q$dUYly~~>hj7mW0sLC4YGq<M3zVM?ju*vw#1|$@PANMkXhEUmF1ciTvlecU8>`%b08IWw6X9+ zi$Y--<3?2_O6QR7?jogJV`4@|joCLu_!W+~1;=`%UTE*Mjo$s?dcNj!n1+_8Qp%-Z ztGLm(5N-OROVQP$@{JS9Z_=*;*W~j|@nuFfkbHj#FBJX;E%+ihiZ^klOrZdImMe7> z=nQGikjoo`WD)^7Puqeah z{*x+dYDo}aUv2`GTg zTn|4yTv!-%mYS@WvZI&S_sbCGNZH@#Jo4Kap(Ub}F54R&OUPXrQz%M+Cki}h*Q5Iu zkcbasT(K#wC`Cbq;j>XetvDt;j%V$9uU^Bxbll^&bMSR_d)3T=Yt>-5W%P!# zx#FfB&kpyA7!f-HQJB~9ZSs3M(lx-^?Ge`6dhcW2eSa4nj$dYsqqL<@UFJlu;r>K} zEB{vkWy9IX@~`$pyY|N%_rl5$k5?njPIKAQNBk^n*(}maL)F@wVmE#!nrBL<9cy2X zSP3(c8GE+C7_sp3%U0u;!Ruo-gnP!E1^KrhD}7+eKg-iOAX`ED1xy>JfQY6QIo=Tr ztuFb|+KRne#<=gl?lZPdXs%EsX~)7Js{9lKh9Dcf3olcE_^F;Xmmrha$^;CYzf}s` z{YsN>d^uodPhspRbz(VdGqwA+cEq>q$kcdUBSmR@m9ACzy0YM^W`$<921)8xQ&109 zF{3|}#QOfdqHvT>fPA0aLR?*;q@AVQl-o|1)ey1FX4xN{}~XFt|$L127x zOK!4VIXbE_8Fe4TAqUrH54o_TUCBpis)JU|22JVj7S!#J=2LRr#A*i>uXZdoIeXpg zX*+eJ8pLC>@zR+71*%aBu@i=)Jn7_FTZh3Fv9YMHGm#zIYPN-CCF;Q%dJhF2aM6-I z_77E86IFr$T()9;^?Mo;q8Y>&7zlL{qIrsq)xnumDA|8&rNCn^msH#Bo4}--ZMCyq z_nOdllb;gzwOJ;`?|-E&3^ob3nPl&1?*`hIOLR~Tthicj$MGMTUL?JqMld7r6 z4;ucb?E%nZYZ^sjuK~lcVVdP`yK>%A>DJrwj;|@R-+{33Fi#u-kB7SS3?|g2kfv1b zwEY^-@Dn&XdjC|BGo=_2dl|;~13stu1kp=z3-1iitZwTae|qS1<*eG(tM>0(UaA4d zc#&+`$Tha%8{9o^pMi6^hDd+Oc^gFmlI`#5nJ1@qWQ${$ww?+2?Y`x+&ePML^HbTAj+2ds9x(pC1rwbo1bQbp4{XadI%F7( ze`s7960D39?axpl4i4;lz>Z+uS&`M*l4}%tO?z-hhp(3rqg>E)o56GYbf<^t+--B( zOE#3_!_i)WC;#+AS%P1a8)uW7J<3|nJ}nSa6a0RA5l{pXrWB{9fbGUFMc`r?f+Zz2 zRrI=ppzT%*j0xDCt}I>DP-;Oe*?xO7pYbmX1gC%I_o!I%nB#DO6gMG#m1`LQoCHvrnjuO@N60fX(nmUtHn{5)|y zN(Yz!J31J`@r{HB^ zAkPo0xvEkhbeGErr6W9aH!M9JdAs+?wFr|wyKVd z-piTR*sI=q?s_YNfJkqrA%`zt8h{f*kh2YwTe2z>K~lpr-4!wky>-v3BCucDP3alt{X(vrd5 zNB7ifTuV+?mOjyY{~}c%Yo;sq&|cL0wz}U;YY~#8n4!>ZS!=DIJ9U31le24kBd|g9 zeZ7RVZ=D`9KKI$(lOpUDY@Uo&LJ9{YVGjGq>ZnJ1b!r2y$37WcrMIj#1BFV(dGziJ zI7RU76@!TWe5(YiUUI5J_&MD&Fv`sNAVbKQ{zr)+U!R(#^r79OijnnJ=WY7j#$ewP zX~o@ht+60vmvIHcD(>7k(rbLXhLGJ z4UFX*=Nv$;XvegD4-Wr{8A6NhwY&4^!ps%H$pnI=7nu_w23eyk-2ci%s@Ur>kyR&c z^NU2z)Ou}yG!NRHd?oR=g(sEwUd-e3An{@<{?)+JRy{XdD-}X>cgq*u;Q+e(`ySr? zC#HoKK)V+fo0_{k?wf53AB3%p&BS;REu9)ST0b-P#EQ_XsvT@F*Ec_y+uWTzg*}{I zcoC5%`j$RHo^&t1?#se%k3i!+?}&=eDn1q-Yg)y&`_i1VC2#MDAS~7XQE{KZonp;s zH6HOE{7gf*UssaNf%+xm{F8-e*}+ODnXZp<6Dl{3B-rZ?75JXYH6ruHZ;OjV_*37~ zf=UkS8+u@2VWs~Qo!XTf_Zw^3wHbb9@%32-YpY*v1&UNJBw@-m9E0{Y~ zH|bfq_c*3)vB}#(MtjzxD*R0GO&}~g8Wg1d6g2;@JyrLZgSvQuTSS33)j6BT!L(ZU z+L*?u<$8(dYR_5$ssT~`P4I-q*>aK20CINgpM)T(0deh9V_w%(ft4znXCu2z#VEwb zcNV&?tc^v83u_@>%FF+gOmxB7!5My*PmRZX{?w(>;jzj)rQCWe6x5@dNfD9WOCb$* z2Co*K?RWYT9*kW#pIPYP{$qj`RyX_>3j#%_c3Sh0hv%&B>A8{7OLqfW#ug{6inl6#C})I~ePePW3-g;r0q&!%CLIB+CM6i3?EG6jQp~xV!rExPCLoP%7i|d^*rQSliwPTP60B4f!JLc zATaWQR>BT~e-eC)G9)JAb?`{L7Wx48}>_DIHLk#P6PEn=9iDF zU5A3|HjSuk_Qoqk`#rWg9F5*BLilWY{c^!)j9o8;i1&F`w>=KkPuu^^3t z`UXx2?}+vs$xC4t5t4uhPxrxr=RYc0_O#ipHLmMs+C=1=io_3kIIE3uBd8V2W)m#{8@y7vEl+y=PE`u}s>!v;Sj zI^QIs!u?fy{_6y3sNe+0sK(g~J3kET(#uHw^+etgT``;aF@1oyACRbk2c`3*6A)INB9 z*TQPb^M25*Wk*@?I}M;ygu(~{NdAaAtVIeWfLy6htArd06kRE!A)%{RCkAB9j4bPq z=v~Dezs>4I0pu6;k}3NIptJO^bV{X8+#3BAfN5t*Qxx+8WL+`0TXF&9$ssU(8l_8% z|3B-Xb1y0TXzWh%R8>66$QsboKx|H`cc7=Dp&}D-??Ooe#f*`#^og z@c%%-vET3G-y4X#8oNele%^jtzQv&!5(u&+4DRO-0Jt;N3(6)1?hypy{{i5U%bmEf z6KR$WXXVcBKUZ6775Y`~R(4-!?Z{%O-TeG+(i?~9FyEP6whO3nd`5~msBDF^f>``N z83n>nVw!jAD72`4e-UjG4ZrpZh|V8rKgP}9!4763swCjKWOcaspr96u9~bcqoSQt} ztwK-&A!GjuT1eS<6BjmU63e;b#g++Qva*DS`hmkTRBC%+G~zyjl~(Of7Ibew7;?P~ zpp&aA#Z2gi7u|kD6d8;FkKr#f$~B6agELs{XtQTP=FvAf6!j$_qM!ea`d{2au*y>i zff7I6*fk(CItgjTIIu&jKj%yc9N6>z%V0L0wsJ9mUIOG56b%4LiT{%HXFd3rOaJQ9 zzZUneU;5Wo{u@yK4ZHs@z)8Ls1br$NbN#gT@JCR?o_fRHBSCyDfWt(vCiSXhrW?I+ zxHY2W8Y$C-$nXLD$z=cBH*F8<V&;cN1Ur}Jt!N@#d_5Jcd$nBw^h9Q^gnEQ5{`VxOE2aAEkC2V7eK*m+ELOu}w@k;^C@Y=6D0pfHXu^5Rm;fU`3`>>H^fSW#Rr z=mzo%F%{+?A~sK^&g*5Ux5{bMCND_Lrbc;YK6 zuHxl0tz9|cr=y9_K$>#zX@ae=j*O7Ub|CaS6il-r9haLLS4&PY7vlU7yR!zF>rV8Z z;N=P90{`%5Sm1N;(FR|ws3U)J_kX-@SuY=`KIzPhS@na9-waRMA z3y-ENfvNCd{iD&S7@~^>eqLwz9w{VL57wqD#cxN2Urde|4o1BYy%>GOj~k4h6h*xz z`v5HW25Msdtp9;6)^>z4ILM$E-m1lGJ)lSQ@~Y4xo?L7dZYF`qzC%5gASWDu8=LSB zwV<;&gb42u1C07&(5uiUP!|_XQKK$74rJo##X`KIUuKB?MK5M(4xp@>le`!{D#Mbp zqx{VbjZ$t~wTm4*r;xYt`*itY_{pn&sf$O|#;)ycqgUh4LQ)CVnrh9DosE0y!FPYo zG=;e@N6|~G*Vk~v?n{fe4FtV*vlM~UVTs?xeS;QnIx>xo#yuZ<&hJ)JLy{Pb zTA~w4_*xFu00zcep@^iNi^S`~=`Fn~T6U@j=@(XSh#y2Z!iqC@?R5WQa zJ{zL9sH|A1O-RXC$W(m9^#GRW#TVtGq)V>eb+M3&t!u_Q4tn`y1<+DJIedf5p7nyq zmvKS}Zd?UFU7;{hA%fJGUoi`pbkFPKn2chdDu~QaQ<2vGG+=!-A}$uocM>`Q>iZv|bJBqfd9* z^rs&{H8X!8!fQ}pD{SDsXp!clK#PS@2pkvuqM;a$6NY&7^9THnptGiY_q}gaQ}L0q+D`f4n%B>o%oO{3Uo#-F42*aOtnGUaa$H<`M5c`w3r#j)$cWtaJJEX9kATM0W+F+o zXxMB85t~0VRhEtb3&6dYmjpj`@MhlGqdh@3LU=v>d&V{cuPcqqyFRDtMwh}$l@zuCAZ2$t=~XLFVV?vemhhE#X3X1 zA%+5XM~#g@u%7|GHcoo8$vImqOKS31lV zyN>v{XZ3loqs|6~vV0o-vi2I+nbK>8BeiUZ!RjDT$f3B+ZP3gJg4&RBIM2>uTce$R zm>l5L7jureav8wHukyk_@Gx&(`191zXi=tU;D;2fK^H25CzKGdZHNXTCz*#5U;ph0 zT@zB>-u-@B&y70<#H2|?B2>!P+g6zR*2TK9%<*$>j2AxZHidO}GU@M8W&G4fTj+fu zShaRr@vwM*yZc)+Grj2-!-c5JA}>LRLVMl-QK@~utLSJo{jzc4i~a9W`wFhEGN6yB z)P;SqiT&SB+V$0!tq;T(f$hGzw+)=;BDO?v+{t0T7^Uta!lJn#;mJwgf1^Ts;zd~N ztbHoSXL%7ob_q%FV87>tCR|lCxgaV$6UXa9GV+b0SY1yc7lU%td5P&ae>?ctW?^AR zbQniXcN1H4VgEpTlys!^T}kGniw)>_e0+WFmgGecyG?4|ofv%)XZj=}$L|yhUkrc0 zc>x4K6|Y>Z&h3IP!YN#DGqEq|VocMNlkoY?^3MihQ6RDa7x{ikScmpvtHz#c7vWaU zR6SiQ?l-66IPn4(r7v9nWaHg55wsjF-DW8q54~Q$!1CN8^?ci;|Kox7QF{b~EFlYC z#88u{5au;>c=?`i&F7sN5d%6dH#T|8U_QJ{U4R7bTgx?|dx=btSWa@yM=`_Z;lwc*yf?sE7YxeCWvQH4m1-r)tLyEy5Ul+c1}V&4=nISJg*t{E79^ zmm3g^G>D(9Sg7e$@~=D+fkBU*7leegAm{s*=lj3TPB_7By<1*jHqW#DiiRZ7hTp4% z1DJYy;Yy;)EldP4EV3SHTknnAnwvUet&`8XoF9+C#Y%}w(luxp7S?pO8MTEUO6}}C zMicxg&ncnq@;m}_S{o`cPZy1vf*@|Wy)pcW6J3qL)^J;z5wnIS0(5Z{_vaE|wdClK1>d8?9tVn-`7zFj-jY~I$OCjrf0yF7Q!zrKDbezxw|(82PKSj%OJj{P>-Huw2MJ6C`QIqZ^MmBJMp zxAXfVheLqkM@`O=kcGm-E>y9@lrB;Qf;JIOCB!32c#+73;ye=jKL_(VTFXO#*;7dSYbb$nlN#R9iAj2#z z+)B+H$1Mu#b}hNWwmvmuQB7$a1KCUrNw z4!Tco=$W?lw4!;wrnxyda8K#6S zqn{IV5b|u9pi$r4H6mk)`}RVGjX(4cI>(z(}+h@NKq5W^TVzsdFbV@oMEdfc(FD_NIj zYU0ry5J0X_DvZ=Y|jp}YDjxCX)b139cbWHgpH`DPs|gI%liTGW z2i0}K*Fd)IOgr9nICd8bKdK=~DHbxfd}wme{-B@|H|^x@H#%v0Q3R{LEzJfE9++xe zoWFR$YTX{|{3zx8XbfBoI#{2mx#v{^`&{F=F-k<_b8hi?FE~Nmut|@5>Wu`i_a_0Y zdDL{e*6gnsj|t0S8iTEuEXaLceKl7~&uY?k74>HfviRjV4h4~M=N6%JWo##EDdib! zlXhA={m*oGeb*HM#4=gA=CY!Y19q%vnZQ_KkjZ(rBY0ji%hc~+#inlAd8QQcg&;Fv z-E2}A(qaB0(v8#$sc5CzGq8x^ID;z?%MyVrp<;EpW3m)cFGbrc3&9WN7cU4F;znO} zX^%JX8o1>W(Q$Z>+H3952TC#=d9N58TlV6Q#fiCnbu&w!pQ{*1@SQOq((Dm) z09RpTQ1^}3u%SwTyunGQlHBt=PIJ7pSnPD<2**`uWaR6+Fv`a<(o@$XZcMo>tmXGL z1z8JqJrJBfn$+{H&@6~}YgaC|C<1w~aWybE4BAY{>?r^0Iuk>~z@#32S|ONczVwz9 zxi^?6*vp%bni!oB)4ixv8A(TCehhf8dR^{4kVjYbhXJ`t_PT7?=l4C>79oyi#2?ev zjBm;g8ZuF85yuBk{bv(E&T=4iSv6Qq{_Z?E*>2F;*r% zi3JYXhOCE>?=tL$g;$~sIJ($rcwhv1&dXhgT^=->l8JiXRjK&hX^fSb^JYea% zHhmR6MY%jot8_q?tQH-@YEPYRfhu(Bg!Rbx^M1n5pra+KGC|nkzRMxW7v1)PoK*Bn ze7u`CUAIl9Yxf4#7aC4~V9hWH9<{M}f`-pv?Jv}^30Vso21+gqF*8UyG%1Q9B#7p_ zfEyaV;^5PAYWTlBs6c&{HKKI?&S4y^OMvo9&XK64XN0HT$Yluy^MU>Sh2`UY#A+rq zt0(Z`2qT#*sTANsup!QEZ>Y-{%jJ6puf4&Ii7wpY$~3MctL=fRaq+#|j8BX}`=K!r zG1oi5KaM(RxrChsUjj3(OjxIjqE)`j#1pfzDZTds#m0(G7DtnIsS8z!@%F(`S7AEE z=#<*y{Y-yH`8DZ#2Bc6&`3J_UZMpXW-OVgYkO-XQ>v|#}Adx?V_>t?}LPES~2^8z|PF6`_me}MbP5M zKv}G%4&y6>=eoo_DmDqcgI=WMQrK2ftx}&Z%BTn}sQS7#O$f`lxF#d64Qbi%LV{}J zylX^9p-MiKkmBopb5&f_cIr1Rvw12OkOqOYyLInwzl+M4#z*_&qP-N46}6phQCIyg z9xJkrtxxj2V{Qo|dkqBiLsSEaRWY5a^b6BVFZH*@+Yoi+K*Mj9C^jK_EinVk>~ zksH#?vm;(Dhca4WQ0hgW*Pz_fmTPGlpPRa<*`E?xAy?xSQ-jJ6@tI{tgKg#}T}Ifr zEj#`D>^Bz1D~1t#MmMhcJnUlpNnVWR;#j zWJ7R}9=F2{C-oG}N8jwr1pFfs=j~T!BaOSHarYZ?v4of?*o2}JPuiO|4 zBq8BDBA=pwgzXJ21KmjXLOAJr(rifw%F?V7F9D!1_mDCA12PSZQ&m()xG` z?J2}>@y0Q|>Bb%h&Ab6Yjf86_=Q|{u4tElR&^+_ zM~NlrNk@4@3b8S=9F7~-q>9QX(H}$5PL1S}qLmPrW{h@Ki=eBv!UgOY>QPeuQ8QwC zKoV#%SmhG<6859C&b*$aDDm;bw~=dDI4ROV4J08=g&(S?ibfTi0;_rLbE?;vpZMU- z0n2i7m}ZlwFOU}16_xfmyT1Yl)f{(Mg}fS+au3raBZygfV@BLQ5f|!C4!)%3^2pW1 z$W8fdpGLGP)rseQ(yl5I_b~gn`6anV8y;Vkr$7eWsOh;|>{nH(@{wsPlvh>zW263X z$_9&bQCB!P_TxoX7=ZzgB>b?Ic1qaVOe?9Iu-i&9+e&*k8*t&lN%~N!b%~SwlBLI1 zZwDBn!w9;xlN&xFJNiC;Br6s!-44Ac=-ed=87teaB>go*XgqEE!}BTMvD1lOn*wMWWRY1TRdd`9&in@JK;42|7AOF>w&sM*39t zHjx@1-GHD#za>)=9}}17_w11|bN;kPQ$+2*dNr?99(seVj-Yh5iZZaO(An>Qyhj!& z^XJTDEsPk>?&dE-w~MP zD`Im~f9uZcwI{Cq>@tmO{seBn3+7WQZ`Z(^L`j? zpd;zGw7w!(4>sil_R#df5mv=-U5a(D9)B2k$JFhC^ZM+g+&g_ad*=V>{pU8*%jjCC zVx6O*K6nGqwXeI{7St2awFTy;yYQQw?Q_xS@*YS#x^GkQ5HHO!nM4$fBzY{Zdx?+p z*&F7p@r}CGb?&Wg>OWc~A|j0aL&NAt&>Gel5=HPCU0aCQ%VZ@!c@gF)A5`aK0`Ju9 zcb9K)D!ni#`NklxS&WOy>+fdx9Q$TdjS(e0>+4i)V%8|3(S3A?G* zLV-m8sGv;9M}E{9_t}SYNg9bYK{d(vdA_sasD&`Yq?82B~So}&}<6{+C+@$t}IkjMQeI8=`wuNIFgQjiF*XNS2iq;O$4&I?> z1H9_CpS2#w%qLoeP&_LnOk*EdFMP>vq(0mxGc-e^b$g!wQyQ`)_sz!K052Bp8}M<>xKL+DpMS%O%RjC#iZ~!dHzL?f${cn z>ARsR{#y?ACruK>1)9rh%N{!PG+%(BjktiKarurYF7g1ZM-ccUE!KYob|8N3S zovWT3Ey91k^L+)r+Cz$E48m2Uy*y;C$mmfnvuXpa5x2VMQbNLao9C{eQ$4zeGgZ?nXvMyS=&fhho!}zhNK35#G0f47SA4{{!r&TXKA_dS7}a15 zu6m9G+vineovK0QYL-8+h^vqrqp0Q6ur3-hyM;!P^ttGdzJz+cCh|Ij8x?q#+13QX zhXn|SyNR-Pa+iio)n;Er?3j5Q8M@7i^(Ch;$ygU5_Uq&F5vKDRnlKH&LUjm3iNVH- z%SUjz=L!7hFFS=AZI{P5C4z~o$nt81gC|ylV`-8K<|ljwr(HkW?+Q9gXCNiV#T6a# zVK9Q#IJ6dlW4vm)A2)Fii8mF6PhPN(k8JoAwc-4}=yc5gekTjUAWQj}f%R#$XvQ8% zOqsf8Q=jXOa_e&vYDy`Nk#8la(N+G(S)TiNqj8($Z!(|EzU*>!=&oJzcH06}xDyuMt?W`&; zuF2-E2!zcBz7-X-#{Ry#&uO)iTSG(TI)RbKUwM2_8=`I;?+v}A(C~bvQ@V- zs*53%-8E#(GMKbkvt-FKMhjuMmdp?{e&?O}Jx{m(o9CJ5J?}Z^{hsgs`5eg21*OaG z+q>WCG{?t+F4D%OhZrN!uO}uXA-QiR;KERZCIB0LZb^leD)9+38(nP{nu`;_IFUkT zz~vhP#teN^f1WHkMEmm80Xin2wu(3_v31KnFv`a4LG?+H_B6}J_W5Vel@#|hF8Z4c zMBqx`z^SR%%t<2C+fV;!js_k)DjU1q=&tpYDHQJgHcI2*<+H*NXV!CUpK6EXemqfy zKGSyLBHea$;{AL}@szOZ%A0nDSHmX@L9qd>=fT_jN02G{k2HWF)Gip5ljW>Pv2l+A zmj@;+4wlP_bgRC?fzxh9S}1r3u)UBM1nS8l*{_cXEbI@=f|)l?1#JABTqNEcK)u)u z^nHcgY{&>M^|;0y);Lh!q`-$8-9YC9Lj@z18m^1RM?m}=1Rl1=>FPZk)37X78 zcWm&|tv`mQ6k~l=0ISjQl{Vy>`N-nF3`z89`q;djqxq`GQ%8bw!`G-ONmWnu)b8%P z_jS3Ktx2}SIZcC@Cn)z(xM7kUDC}B-%9TQI-i&7A?@M(@mDLn~`%J!#A~AEQWeVRL zcsq4h@XJME-S1yc76AX?@2hvRz230QSCJG@yZ-L|f=<8hdXG)_jm?&qL4)H&Kj9@0 zLi&({s8@}b`T4)bXJX&0YaJ05_nK8T5(4_@WxisYf%kW#x&C|nE5y=swHHQ*8Luj#Yu zOFuxKj!BQZGDoAn_FFRv2UJ(7EG z$dzqIDjBa^_PXK46>lx)wi>p|iRLwN1;-_TZfP6UOTp5`c*qwDgElP~t(D>r<%|C- zs}F6u$;?l){cRQ3iNlAV08$AjBwxZ!W%KBL{Ql?=#=N=BgK|Fzqh5gha*A=X7EKnG zU^pK?RG-4|QFO7Dz*K^uE+48|>7}&l#r?4g=|akk-`k~XbdK6skGfW_r+k>JkY675 z3)1OnbozJCyAbfI?XKn_(B5KnUUwYf{2D&vW!YI;M`p@xCd3TzsQ;BW?D7ag2kuqA zrWn>Kjjt$D0#4UMC?$-l>N~2S2w51Au4h}AEg;x&?wPE2ty3RfSak0iI5$yZeBiD4 zPe%OM)`Yp11iLv!m(o%~eHd|w?>=pR=d4FvzQB4gJ#MH;+GArQZw(EbtvV8#T#co| z4`2T7a9CEMz>GVe58Ic2ufjzLU+fZ=T|RiEc1kcb_aO*)&V#&G9CzkNUZ~#m1QheW z>m^>6qUcLKhLOqDBN`EyQ|KDo4s}#V!)~Xt)+Hs-(VPgYZg=R6O0iaXI;QPCFxQc0 zx89Zq5QugLJHjwj4Xu{G*Nm}L`>p~1)JYXjjQ zS)8-umW7}*0Bitw&KC#Si zr$4O|BL{|j0xqKm8gCjI$M5~tx2HONtHZ@P+2F?}%c_^?uo7MSc;YlIBH0dJfh5+* zI@cOq9Y6Fn2Nde><$_$?jzkS_YgQKGmoC>46v9V&x@{YOjX*y$>p0JUBquxvdr{#e zm+#LKx0;g!giZLrJdy}raeFa<-!;9G*--1i?{OUOGm|Z6ydI6qc-LTZcv<@}&nZM< zRQsa0ETQS{4$;!bkyc$*2!skMFjuAnU62_1XvqR7qkB1E9*3Kz50zkkS4Pr>S+9!s zqZBeg2T%^SZ!d@GR(xR=F$dX(3bO=mQ>yzoOddB0(25JN&sUiBsIoEUOexlsv!b%V zZOJzgWU-Q<;}G6X;aX>fFu!DiLufQ6gN^wg9TX*aR|}-p1@x2^L0#mGg2;LA zUOg#ZRtn{pmde7KDCfGTZ2_W|3>z+&P%}^_fA%Hn=Y`_}=%M6Aq;HEiU5?UP>?)jI z=b7)|msKgr?Nr*n!{YePsd43AcidEti}U`u-XBf($K8)L1bQ&a-n1t@8N12I)_uYc zm8?YsRd;*-DPe%J2jQM1Yyj+M7FKr`uNmHFj0zCm7{gHW%p!Cb_rVPv=-~_3aoMZs ze^{6W+DL%ozflxBo&ssN`H=Vak5>4j!gTJ&@!K2cs_k1)3Kf)U&~h)DtZiQQd11A`&(q)Ctt%37m_=BBf}7ZqTszQS#!18H zbG|S}n{(6lO8fWX$XjahN@|!;S}(c>|J*NmXZTPtHZ+s5rDfbd;Qvs?AZj!f+kxua zNRP_N^^q;cCaOrf!$AffFqdzS?PC*=PjdmwXg0NNPMq%U;Ol?Wct^}!=4%Z`KwnwO zSmvG>M=R2zeY2MFER|N;Gi~=aY`eoV-q=+LNxX_@$H=s;T(~WJLMFO9CxVH~r?vY2!6GPx>;&Na5f-2Hg2?2xJi<6KsvvYa8}py`ZJw$iaW0(>S;jbRqVD zU(aNk*PweNbg}{g7Rh#3j!S{t1VTOuj^P7-R2mQayGSL(T9MMz)8U{o;}oa%Dhciq zwbGw8uX~9{N9rwlD<_4vDZrJ|;v=@=E literal 0 HcmV?d00001 diff --git a/9.CompositePattern/1.Picture/组合模式UML图.png b/9.CompositePattern/1.Picture/组合模式UML图.png new file mode 100644 index 0000000000000000000000000000000000000000..a10f61251f540e06ba3f2a14184b2aa3e06e92f5 GIT binary patch literal 26951 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 literal 0 HcmV?d00001 diff --git a/9.CompositePattern/1.Picture/组合模式实例图.png b/9.CompositePattern/1.Picture/组合模式实例图.png new file mode 100644 index 0000000000000000000000000000000000000000..d0cc38c915a672af0c77b20aa134dbcbd6cf3cb2 GIT binary patch literal 13232 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 +#include +#include +using namespace std; + +//󹹼 +class Component +{ +public: + Component(){} + Component(string iName){ + this->name = iName; + } + //һŻ칫 + virtual void add(Component*) = 0; + //һŻ칫 + virtual void remove(Component*) = 0; + // + virtual Component* getChild(int) = 0; + //Ų + virtual void operation() = 0; + string getName(){ + return name; + } +private: + string name; +}; + +//Ҷӹ칫 +class Office :public Component +{ +public: + Office(string iName){ + this->name = iName; + } + Office(){} + void add(Component* c){ + printf("not support!\n"); + } + void remove(Component* c){ + printf("not support!\n"); + } + Component* getChild(int i){ + printf("not support!\n"); + return NULL; + } +private: + string name; +}; + +//Ҷӹ칫 +class AdminOffice :public Office +{ +public: + AdminOffice(string iName){ + this->name = iName; + } + void operation(){ + printf("-----Administration Office:%s\n", name.c_str()); + } +private: + string name; +}; + +//Ҷӹ칫 +class DeanOffice :public Office +{ +public: + DeanOffice(string iName){ + this->name = iName; + } + void operation(){ + printf("-----Dean Office:%s\n", name.c_str()); + } +private: + string name; +}; + +//SubComponent +class SubComponent :public Component +{ +public: + SubComponent(string iName){ + this->name = iName; + } + void add(Component *c){ + componentList.push_back(c); + } + void remove(Component *c){ + for (int i = 0; i < componentList.size(); i++){ + if (componentList[i]->getName() == c->getName()){ + componentList.erase(componentList.begin() + i); + break; + } + } + } + Component* getChild(int i){ + return (Component*)componentList[i]; + } + void operation(){ + printf("%s\n", this->name.c_str()); + for (int i = 0; i < componentList.size(); i++){ + ((Component*)componentList[i])->operation(); + } + } +private: + string name; + + //б + vectorcomponentList; +}; + +#endif //__COMPOSITE_PATTERN_H__ \ No newline at end of file diff --git a/9.CompositePattern/2.Code/main.cpp b/9.CompositePattern/2.Code/main.cpp new file mode 100644 index 0000000..98c635f --- /dev/null +++ b/9.CompositePattern/2.Code/main.cpp @@ -0,0 +1,48 @@ +#include +#include "CompositePattern.h" + +int main() +{ + Component *head, *sichuanBranch, *cdBranch, *myBranch, *office1, *office2, *office3, + *office4, *office5, *office6, *office7, *office8; + + head = new SubComponent("ܲ"); + sichuanBranch = new SubComponent("Ĵֲ"); + office1 = new AdminOffice("칫"); + office2 = new DeanOffice("칫"); + + + cdBranch = new SubComponent("ɶֲ"); + myBranch = new SubComponent("ֲ"); + office3 = new AdminOffice("칫"); + office4 = new DeanOffice("칫"); + + + office5 = new AdminOffice("칫"); + office6 = new DeanOffice("칫"); + + + office7 = new AdminOffice("칫"); + office8 = new DeanOffice("칫"); + + cdBranch->add(office5); + cdBranch->add(office6); + + myBranch->add(office7); + myBranch->add(office8); + + sichuanBranch->add(office3); + sichuanBranch->add(office4); + sichuanBranch->add(cdBranch); + sichuanBranch->add(myBranch); + + head->add(office1); + head->add(office2); + head->add(sichuanBranch); + + + head->operation(); + + system("pause"); + return 0; +} \ No newline at end of file diff --git a/README.md b/README.md index 4a86323..219b6e2 100644 --- a/README.md +++ b/README.md @@ -43,4 +43,8 @@ 11.设计模式(十一)——桥接模式 -博客地址:https://blog.csdn.net/sinat_21107433/article/details/102694306 \ No newline at end of file +博客地址:https://blog.csdn.net/sinat_21107433/article/details/102694306 + +12.设计模式(十二)——组合模式 + +博客地址:https://blog.csdn.net/sinat_21107433/article/details/102712738 \ No newline at end of file