From e539d4bbb41c654119c9b883dceac71089aaa49d Mon Sep 17 00:00:00 2001 From: FengJungle Date: Sun, 20 Oct 2019 11:06:41 +0800 Subject: [PATCH] Add Prototype Pattern --- .../1.Picture/原型模式UML结构图.png | Bin 0 -> 11311 bytes .../1.Picture/原型模式实例UML图.png | Bin 0 -> 17838 bytes 5.PrototypePattern/2.Code/PrototypePattern.h | 70 ++++++++++++++++++ 5.PrototypePattern/2.Code/main.cpp | 52 +++++++++++++ README.md | 6 +- 5 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 5.PrototypePattern/1.Picture/原型模式UML结构图.png create mode 100644 5.PrototypePattern/1.Picture/原型模式实例UML图.png create mode 100644 5.PrototypePattern/2.Code/PrototypePattern.h create mode 100644 5.PrototypePattern/2.Code/main.cpp diff --git a/5.PrototypePattern/1.Picture/原型模式UML结构图.png b/5.PrototypePattern/1.Picture/原型模式UML结构图.png new file mode 100644 index 0000000000000000000000000000000000000000..2d459247e089f685ff79b661c0fffce3030e87fb GIT binary patch literal 11311 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 z zTR9b&5bl1;dqD+*4hOT=1MT7^y5r6>2#$grwT;g$z{+wRTtJCb0rNaj#i7@F5abhDWAw6vvn5`}sGO&+BT*cMkuYV#NtbHdl%0hEF1s1%FXB0x%|Z`7vk zQOF;lg~#uJ^p=l|2O15vAvZW|xotMbH1(KOEF7$)$j(m6e9 zT$++F)0@|1mn^dcI3C-}bZG$I*Se{PmNDt%IIC<_?Kfa_Fo_>3*ugFf)@z$hN^M#? zw?31*M3}TiQ~VJuV$t9sU~)C$(%4;82UUuiFlSx{?X-R!34RPfYi9y=HpZmy~-fH6QUqnL5&jZ9zJ zr&j+V;WgDGf+0NeugBV;&PEu{t)$t>uW%Bs(EgWb{|>M)$?L$cyN+&-jvD?941(Gn z^{7|!0ociiJ%#jJ-zIVnJ!%rff+;M?A-5?Mre9^t5JUDgBTaGDikMIOiBnyrl~9u% zPA#_ZJ-yUu5=OS-Tsh@h!C5B%PsP(29OZ2@@XAJu@QHbaPtTYKiZ_&q_I7Hm-im5y zWestC(H%R;9Mw~gT+i8lIxzD=!HL(ZR=@~g!2|L-z`aVIkQ_(G{^Nd%gQGYxZm}EE z$ATR0PWMZRFI0?0^lj!Te)x#7yWO}Po%v|u!}5zv&JEbqRNB%h`+qN=!Q>5S_RDf0g5`?!T6z z&`r~d|0(g!)wZs$jfu%30t|+1G1J98&2E*NNPm6m4o2#<17*gkUv=Zl9BsE$4r`@d zk_DFnxfLZM$`r}aN%zD20J?WW#wZmR}! zT;H0^%I)>6b)}gwd${5gKe6cu$BDUSP1_ipPws=nCW|K<3S5QQ3Jf1x*2 z#aP^PODR;tUk~+Rs&?y5tUO^8he5<8;rR$@^7uT`i?-aL4rGL??h1DJQn^K924PAX zeB�nDNpV@%_^ty2e8Glfeb=x}q|=MPG;w1*HD&e%y1}-_?1q?aICl$lX$Ls0p9Z z=D#3G6k!zfHU$Em1jXis0&3}bI{R($Cub8rtn93^!>UVrw9(sCSWH8CSEVR?^>{X2 zY)m&k<9zW(;0>-Yw=~ki4bh3UIkB|odAvk zV)ZBVPbZ%F5A?g2jAic6jEm8h%C9@rBoQ7vKRAj>18S_DdI^d;m&9{Y<9%-Wg(0Fq zyQwF3^M?|Fx${meac{90o;Te?XK=(3wWWPe_siJC=wkb&@~OE7ZQqNkKK1>q)KkUM zgPEE2CZEcpo8N^hefL9`mnEeKTt$o}9TF$~2b{0Qzz0QKSf$ravg0?p29p&_JQ0r8 zE$J)ICJYhd$K1&h6nowhneN7x`R47vWHgt`Z`5p($A~qWdIfjJ2*DsK>Y+8q?5!>A z)VG&sX}Dar&*f<2RjUbq8DTVqH;-xb-C2-AJ06&XJ&EBxqvpMF?@Qkz_k8;3VN+^% zNGbJ*c9jvyByUdYRE#iF-_66BZT;n+w&CTsu}@V2zL1qK4E zlWI2_`IeV<_nj)Xp)h^E-xB1-NFPrNl!BHB>V7g%aMVR&hZz7*=9FJ&&L}~?$!?h3 zhaU`&T5|y37Tlwd1_s4Ute1eq2S~#&!4VoDn6VEFFk*;#s_S3{v_aD)?=3`y0pWlj z>Z)2AfEJabe-Z>N;~9}MLa#(4QvfIL%G@)L@BZaN@KpRafy)&nqGUL9KLPynT>{~* zgR9}ni$J95jkre5lLeYcH+43PDFGspt&rnqNua^jc?k_Z9y?{NA`P$n};puc$VS`~6+Q9ir?vpisft!$}%lH9D@lz1& z)dd2~!neFlv5EAUtWbMR;5fPYa$kSL-S;ORGD^7b#?wHvb6P(&A5{N|%O~B8XN&8f zcv&CGn!qE0;XI4xPOAo+UbzvLLIR?lO`hZTbPYbwptTk_2 z7!fmB!eD;@6vaxCU+3qHfK7wedM0Fnn19e>>u9PEd?6bRH@ku#98g^DkAL{zHW9S9 z%cvcPf2Id!0!Jso)3`!BHn4>y8F{14x!^9Zi z7XmeoG?P3fty(bt0|#M?H4NV@98BGsJ}4iMy`3f!{Q|fprXLN66rZp@r@q1KhhC=c z{gTdN!K}vyL`aPrs@p&_rmEK25DENf0{Nv;?6nGzSwtllytDNNA9SbhtMm}UR{=;8 z-OI9{R{#h+Rr;s;w?-jiHqR(~qJX+wiN9-p+y=N_si-I)1#B2qhg;}`0bfM%Q`UR{ zG&PEbk}DAnFco;p_J{>&I}6^G%?Nz~pi4n!H(2VAR-A5gFopp9B?~Y&M*wyZZhbG5 z6j1+xXBXL_EC5a6_*T?&G}s2_vD0*DH`jc&I+C@^IQTKHA%u~d5)D=eⓈKx4kBH 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 Mhw2JN^5)O~KZW<9LI3~& literal 0 HcmV?d00001 diff --git a/5.PrototypePattern/2.Code/PrototypePattern.h b/5.PrototypePattern/2.Code/PrototypePattern.h new file mode 100644 index 0000000..f9adbc1 --- /dev/null +++ b/5.PrototypePattern/2.Code/PrototypePattern.h @@ -0,0 +1,70 @@ +#ifndef __PROTOTYPE_PATTERN__ +#define __PROTOTYPE_PATTERN__ + +#include +#include +using namespace std; + +//work model +class WorkModel +{ +public: + char *modelName; + void setWorkModelName(char *iName){ + this->modelName = iName; + } +}; + +//ԭPrototypeWork +class PrototypeWork +{ +public: + PrototypeWork(){} + virtual PrototypeWork *clone() = 0; + +private: + +}; + +//ԭConcreteWork +class ConcreteWork :public PrototypeWork +{ +public: + ConcreteWork(){} + ConcreteWork(char* iName, int iIdNum, char* modelName){ + this->name = iName; + this->idNum = iIdNum; + this->workModel = new WorkModel(); + this->workModel->setWorkModelName(modelName); + } + + ConcreteWork *clone(){ + ConcreteWork *work = new ConcreteWork(); + work->setName(this->name); + work->setIdNum(this->idNum); + work->workModel = this->workModel; + return work; + } + + void setName(char* iName){ + this->name = iName; + } + void setIdNum(int iIdNum){ + this->idNum = iIdNum; + } + void setModel(WorkModel *iWorkModel){ + this->workModel = iWorkModel; + } + //ӡworkϢ + void printWorkInfo(){ + printf("name:%s\t\n", this->name); + printf("idNum:%d\t\n", this->idNum); + printf("modelName:%s\t\n", this->workModel->modelName); + } +private: + char* name; + int idNum; + WorkModel *workModel; +}; + +#endif //__PROTOTYPE_PATTERN__ \ No newline at end of file diff --git a/5.PrototypePattern/2.Code/main.cpp b/5.PrototypePattern/2.Code/main.cpp new file mode 100644 index 0000000..68f1c12 --- /dev/null +++ b/5.PrototypePattern/2.Code/main.cpp @@ -0,0 +1,52 @@ +#include "PrototypePattern.h" + +int main() +{ +#if 0 + ConcreteWork *singleWork = new ConcreteWork("Single",1001,"Single_Model"); + printf("\nSingleҵ\n"); + singleWork->printWorkInfo(); + + printf("\njungleֱӳҵ\n"); + ConcreteWork *jungleWork = singleWork; + printf("\nJungleҵ\n"); + jungleWork->printWorkInfo(); + + //ֺѧţᱻʦ + printf("\njungleֺѧţᱻʦ\n"); + jungleWork->setName("jungle"); + jungleWork->setIdNum(1002); + WorkModel *jungleModel = new WorkModel(); + jungleModel->setWorkModelName("Jungle_Model"); + jungleWork->setModel(jungleModel); + + //ǷĶ + printf("\nSingleҵ\n"); + singleWork->printWorkInfo(); + printf("\nJungleҵ\n"); + jungleWork->printWorkInfo(); +#endif + + ConcreteWork *singleWork = new ConcreteWork("Single", 1001, "Single_Model"); + printf("\nSingleҵ\n"); + + ConcreteWork *jungleWork = singleWork->clone(); + printf("\nJungleҵ\n"); + + //ֺѧţᱻʦ + printf("\njungleֺѧţᱻʦ\n"); + jungleWork->setName("jungle"); + jungleWork->setIdNum(1002); + WorkModel *jungleModel = new WorkModel(); + jungleModel->setWorkModelName("Jungle_Model"); + jungleWork->setModel(jungleModel); + + //ǷĶ + printf("\nSingleҵ\n"); + singleWork->printWorkInfo(); + printf("\nJungleҵ\n"); + jungleWork->printWorkInfo(); + + system("pause"); + return 0; +} \ No newline at end of file diff --git a/README.md b/README.md index f23da1d..49ea5f4 100644 --- a/README.md +++ b/README.md @@ -27,4 +27,8 @@ 07.设计模式(七)——建造者模式 -博客地址:https://blog.csdn.net/sinat_21107433/article/details/102635881 \ No newline at end of file +博客地址:https://blog.csdn.net/sinat_21107433/article/details/102635881 + +08.设计模式(八)——原型模式 + +博客地址:https://blog.csdn.net/sinat_21107433/article/details/102642682 \ No newline at end of file