From 9d14afb724a06e210eb64d8f6bea319048a70a28 Mon Sep 17 00:00:00 2001 From: bu_ausb <2036870220@qq.com> Date: Sat, 28 Oct 2023 21:43:32 +0800 Subject: [PATCH 1/3] i don't known if it is right --- client-side/.gitignore | 38 +++++++++++++++++++ client-side/pom.xml | 37 ++++++++++++++++++ .../src/main/java/org/example/App.java | 13 +++++++ .../org/example/RegistrationServiceProxy.java | 22 +++++++++++ .../src/test/java/org/example/AppTest.java | 38 +++++++++++++++++++ pom.xml | 1 + 6 files changed, 149 insertions(+) create mode 100644 client-side/.gitignore create mode 100644 client-side/pom.xml create mode 100644 client-side/src/main/java/org/example/App.java create mode 100644 client-side/src/main/java/org/example/RegistrationServiceProxy.java create mode 100644 client-side/src/test/java/org/example/AppTest.java diff --git a/client-side/.gitignore b/client-side/.gitignore new file mode 100644 index 000000000000..5ff6309b7199 --- /dev/null +++ b/client-side/.gitignore @@ -0,0 +1,38 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/client-side/pom.xml b/client-side/pom.xml new file mode 100644 index 000000000000..898d91dbee96 --- /dev/null +++ b/client-side/pom.xml @@ -0,0 +1,37 @@ + + 4.0.0 + + com.iluwatar + java-design-patterns + 1.26.0-SNAPSHOT + + + org.example + client-side + jar + + client-side + http://maven.apache.org + + + UTF-8 + + + + + junit + junit + 3.8.1 + test + + + org.springframework + spring-web + + + org.springframework.boot + spring-boot-starter + + + diff --git a/client-side/src/main/java/org/example/App.java b/client-side/src/main/java/org/example/App.java new file mode 100644 index 000000000000..5f21d2e226b4 --- /dev/null +++ b/client-side/src/main/java/org/example/App.java @@ -0,0 +1,13 @@ +package org.example; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } +} diff --git a/client-side/src/main/java/org/example/RegistrationServiceProxy.java b/client-side/src/main/java/org/example/RegistrationServiceProxy.java new file mode 100644 index 000000000000..f1fe1b318666 --- /dev/null +++ b/client-side/src/main/java/org/example/RegistrationServiceProxy.java @@ -0,0 +1,22 @@ +package org.example; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +@Component +public class RegistrationServiceProxy { + @Value("${user_registration_url}") + String userRegistrationUrl; + @Autowired + RestTemplate restTemplate; + @Autowired + HttpRequest request; + public void registerUser(String emailAddress,String password){ + restTemplate.postForEntity(userRegistrationUrl,request,HttpResponse.class); + } +} diff --git a/client-side/src/test/java/org/example/AppTest.java b/client-side/src/test/java/org/example/AppTest.java new file mode 100644 index 000000000000..d5f435df0340 --- /dev/null +++ b/client-side/src/test/java/org/example/AppTest.java @@ -0,0 +1,38 @@ +package org.example; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } +} diff --git a/pom.xml b/pom.xml index a68345bcba94..58166a7130e4 100644 --- a/pom.xml +++ b/pom.xml @@ -208,6 +208,7 @@ thread-local-storage optimistic-offline-lock crtp + client-side From 24ce9ea6d0ea4f83600679334cd519fc54680072 Mon Sep 17 00:00:00 2001 From: bu_ausb <2036870220@qq.com> Date: Sun, 29 Oct 2023 10:07:07 +0800 Subject: [PATCH 2/3] feature: add client-side pattern (#2685) --- client-side/src/main/java/org/example/App.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/client-side/src/main/java/org/example/App.java b/client-side/src/main/java/org/example/App.java index 5f21d2e226b4..db3faeac3fd8 100644 --- a/client-side/src/main/java/org/example/App.java +++ b/client-side/src/main/java/org/example/App.java @@ -1,13 +1,16 @@ package org.example; +import org.springframework.beans.factory.annotation.Autowired; + /** * Hello world! * */ -public class App +public class App { public static void main( String[] args ) { - System.out.println( "Hello World!" ); + RegistrationServiceProxy registrationServiceProxy = new RegistrationServiceProxy(); + registrationServiceProxy.registerUser(); } } From 2393ad8d281602f90773a9ae5bc7c2819b0d7d48 Mon Sep 17 00:00:00 2001 From: bu_ausb <2036870220@qq.com> Date: Sun, 29 Oct 2023 10:46:37 +0800 Subject: [PATCH 3/3] feature: Translation to Chinese (#2289) marker pattern --- client-side/.gitignore | 38 ---------------- client-side/pom.xml | 37 ---------------- .../src/main/java/org/example/App.java | 16 ------- .../org/example/RegistrationServiceProxy.java | 22 ---------- .../src/test/java/org/example/AppTest.java | 38 ---------------- localization/zh/marker/READEME.md | 28 ++++++++++++ localization/zh/marker/etc/MarkerDiagram.png | Bin 0 -> 6461 bytes localization/zh/marker/etc/MarkerDiagram.ucls | 41 ++++++++++++++++++ localization/zh/marker/etc/marker.urm.puml | 2 + 9 files changed, 71 insertions(+), 151 deletions(-) delete mode 100644 client-side/.gitignore delete mode 100644 client-side/pom.xml delete mode 100644 client-side/src/main/java/org/example/App.java delete mode 100644 client-side/src/main/java/org/example/RegistrationServiceProxy.java delete mode 100644 client-side/src/test/java/org/example/AppTest.java create mode 100644 localization/zh/marker/READEME.md create mode 100644 localization/zh/marker/etc/MarkerDiagram.png create mode 100644 localization/zh/marker/etc/MarkerDiagram.ucls create mode 100644 localization/zh/marker/etc/marker.urm.puml diff --git a/client-side/.gitignore b/client-side/.gitignore deleted file mode 100644 index 5ff6309b7199..000000000000 --- a/client-side/.gitignore +++ /dev/null @@ -1,38 +0,0 @@ -target/ -!.mvn/wrapper/maven-wrapper.jar -!**/src/main/**/target/ -!**/src/test/**/target/ - -### IntelliJ IDEA ### -.idea/modules.xml -.idea/jarRepositories.xml -.idea/compiler.xml -.idea/libraries/ -*.iws -*.iml -*.ipr - -### Eclipse ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### NetBeans ### -/nbproject/private/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ -build/ -!**/src/main/**/build/ -!**/src/test/**/build/ - -### VS Code ### -.vscode/ - -### Mac OS ### -.DS_Store \ No newline at end of file diff --git a/client-side/pom.xml b/client-side/pom.xml deleted file mode 100644 index 898d91dbee96..000000000000 --- a/client-side/pom.xml +++ /dev/null @@ -1,37 +0,0 @@ - - 4.0.0 - - com.iluwatar - java-design-patterns - 1.26.0-SNAPSHOT - - - org.example - client-side - jar - - client-side - http://maven.apache.org - - - UTF-8 - - - - - junit - junit - 3.8.1 - test - - - org.springframework - spring-web - - - org.springframework.boot - spring-boot-starter - - - diff --git a/client-side/src/main/java/org/example/App.java b/client-side/src/main/java/org/example/App.java deleted file mode 100644 index db3faeac3fd8..000000000000 --- a/client-side/src/main/java/org/example/App.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.example; - -import org.springframework.beans.factory.annotation.Autowired; - -/** - * Hello world! - * - */ -public class App -{ - public static void main( String[] args ) - { - RegistrationServiceProxy registrationServiceProxy = new RegistrationServiceProxy(); - registrationServiceProxy.registerUser(); - } -} diff --git a/client-side/src/main/java/org/example/RegistrationServiceProxy.java b/client-side/src/main/java/org/example/RegistrationServiceProxy.java deleted file mode 100644 index f1fe1b318666..000000000000 --- a/client-side/src/main/java/org/example/RegistrationServiceProxy.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.example; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; - -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; - -@Component -public class RegistrationServiceProxy { - @Value("${user_registration_url}") - String userRegistrationUrl; - @Autowired - RestTemplate restTemplate; - @Autowired - HttpRequest request; - public void registerUser(String emailAddress,String password){ - restTemplate.postForEntity(userRegistrationUrl,request,HttpResponse.class); - } -} diff --git a/client-side/src/test/java/org/example/AppTest.java b/client-side/src/test/java/org/example/AppTest.java deleted file mode 100644 index d5f435df0340..000000000000 --- a/client-side/src/test/java/org/example/AppTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.example; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/localization/zh/marker/READEME.md b/localization/zh/marker/READEME.md new file mode 100644 index 000000000000..94c3026d1789 --- /dev/null +++ b/localization/zh/marker/READEME.md @@ -0,0 +1,28 @@ +--- +title: Marker Interface +category: Structural +language: ch +tag: + - Decoupling +--- + +## 目的 +使用空接口作为标记来区分特殊处理的对象。 + +## 类图 +![alt text](./etc/MarkerDiagram.png "Marker Interface") + +## 适用场景 +在以下场景使用Marker Interface pattern + +* 您希望将特殊对象与普通对象区分开来(以不同方式处理它们) +* 您希望标记某些对象可用于某些类型的操作 + +## 应用案例 + +* [javase.8.docs.api.java.io.Serializable](https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html) +* [javase.8.docs.api.java.lang.Cloneable](https://docs.oracle.com/javase/8/docs/api/java/lang/Cloneable.html) + +## 鸣谢 + +* [Effective Java](https://www.amazon.com/gp/product/0134685997/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=0134685997&linkCode=as2&tag=javadesignpat-20&linkId=4e349f4b3ff8c50123f8147c828e53eb) diff --git a/localization/zh/marker/etc/MarkerDiagram.png b/localization/zh/marker/etc/MarkerDiagram.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed4f9c567809787d9317733a2e4fe40cbe3284c GIT binary patch literal 6461 zcma)Bc{G&o-yRG?QbuI|W}7Hfwu~?cQ64hNlBE)|FO7BVl9VNTmWLsXt;k*s3E3Hj z7+FFxW6i$vPQUN>oZs(#&-M` z8-@@F4G;C=I6+H&g8A+OLLl5wof~RKJ{e1(YZTvXK%4QqJ$8!ap60-(7h-`h4`%1y zyQ0_fBu{D;>Pv|}Z?@Ibn?9}0*TJ4~@t6OppC_-V9KBFda{7?{`3|;59dtxMC%X= zX_0UXc61ShppyaxB_QYlQ8gShHXV4EFE_CG*f|aS^~KLi5Bfp`H2$LI$F^Bq5YrxCKB^~);L>CCRhrvvV1lu(EFDG$b59)azt_un55YwRD*P=vc)=^qd1RNhuh?BhMl$Hk>&1h<&Cc&1m~#8HgIb-p#k zdG{T!#PqOi>s4ntH?)>wj<_1%W(Y1h6N3s*;t~{0dQ&InSSO0LsG%YA0CZHP_jaM6 zY_Fl;L3WnX#Rk9XnV$xu$6!iYh3g44Gy2rgYr()ViNl(HH?6}BW|M@T=L*wx%9Qs_ z(fOOzUu_juH5Q?%{wpn;87?vFllkeYgl9LYdtfxbG0qQf@I7RyalVg^ub95oHtB8| z=y*V{Yn0yz1Xe6Z@6EK$xQE%`<$HR}VxuNmoT7v3LS!sll|uN*h1ZbU%%DWDF6bg~ zzjk%r`n$Zc`{CVKl*c`D|9P(7Tb+$lMQ@elRfP#1Y+E~D=h^m735@K#yKbOTB1jbX zH{i&koDwKql?iuTCTtd16AITZEQ9muStPF>n1YG6xZ*`Al|y++CB%3w#iY!8`ZxRr zlu{UPhWo*Qmwa&*e>W7=N5Z8z!vR~YAsiv~X?7(G@4HCZ`vtE#9*6b5gmVV!bR}xo z&n1V$=O#E9FqZ5Qh7`|fVW)Y2Q&s8&jjss_J6OIK62~h4jebO3e56w zDb2zjzwBFN>WLh(b^~kU@d6#`fxJC@KS!7l+!50YfVSY#Znd8N((a!Aa^nJDme=IY zmtM)ffgsb4Yv5i6>DG|aE`0SGBQ$kd1`~R$4i7U>l?crs1@@r47yVabKzRLz(Clxi z)Ynv68kC}H6l_=eQ;of2kM9Sp%WQ1_KD>3Vg0b@jC*r&s&H?g&>&ZV;PqI;UO;%Z; z;|nRjHM-CH`S*w(T9Z}Z>ODSfX&L7B<|a7^aZ=9%4|y=v3FfIUf%pC@5HvPai@MQyj#}?l-2Hua>+c%f_yLbD?oMa^&_hKUODZp-UvR8vl_G?~r zTl7=b>$iKx#V}-4L0O$^^r{xxnCN9dmAwnY;v#gIYpe@zO}cFHsAA&O{*^c&bh$O) z5zj(HDDT7A=rx6b--5KK#TOUT_fLfWe*e|8><qk49iOu8JP+ zxqi~YkFW`R^P790JQtovMCgNvJU^@8tJG(`S*nc>o1f3l+H{p`X=|q>CmXGtF@T`s zzmANU6c6Qud)49HXSDo$r@qh+DbX|2BXq*dg~E4I7KTeFs~m?T1Op4)N|A9$c&b6Y z_8q}28C6w%Lp?pccO@kSqZbX%5p={VDk@+wSa$c&(A|N^+??Zq@_2r_RtWf5z4|08 zD-)PKQD|8j8xzCXXpFs#O?X`3onv_+O&<|=tE;Q4b%p)HNwNs{T$Jwxm=rfHI-X6* zdKr?^O@ru&P_o#qam6NNY2273BgAp8|5{XkcrDXd_Q%7+6N;ApZ zuZlznIyC6paz6V_={xDs1GMH7?-&R=!e;NjefbhPkB3k~03P?FgI&*s zZ&Pb7z9E2Li0Sh@1_Y(Or3DILQ_hfcg{d3Z+}vEWO)J8HuxHL`xJnCdgiqti$~Gar zNO*v$g#|x9f9vcxI}KQAYhy!SBPV@^Pzb%WVSwj);EY8veV!dJhk%_lz(x`+*+|T5 zX*9g64nYTYwj3N>&pe$cLnwUwKp>(QiCa@!70?Wze(FRpkk?Xv$$VnyG}%b^9;RS| zD)XvMnJiU$|yFp#1-n&WM!YB=Ju%ItiXmnJ-UeYevON!U>+Tzkom{jdod*L zWpIH$BNpX}^@+_<$v_&PKo@c3!ZPv2R9ta_Tp>N;?rHOhyVO_zLZ7aB*v!yn_}zeG7`<*27!26+VspW8Y{%q<2xoJidUIz(ie(EEWbC2nIgeq0t;E-W3oq zxUUd}yVPZf=MrT=(EPYz#|PSWE<)sb*=VkRrEytzk*-Jlj@=TtL{3>E;ap5I}Fr=`7J*LOG4u6 z9f(MR6Em@Js8TD9pF4g2wwYytgWUZ@qRSwU^X6SrI6x&1qN>fYYPGsi@B0OEE)zi~ z8F(6PR-hN*@doe;jLkedIAoH*k2_g7@Wy&!&!(0`9!GTWegni+Ic;ZHMqyqdV=jtp zbM|K>R@wh$?^y)=jK7Nmo{9`Ezg6^4`Vc!OxpS9$*SJ#Z<~cRIQtRHkiBw1L7DXKu z_3}~K)2#^m(;pxAi}&keki19RVWTdtAx5j|t_8P`{pJptoJoOGTRx>MPire}8PiMT zSw-?m=Quw898=nro8AUWxV*Nz#b<_73T`_k-I-IF`0WRuGK;Z3Fw5rK0Lo9u@zM#W zlpx#%wRTuqRC0;C(7*_jx2_6WmtMV-k|J&fsXycQYpkk2bvZ4}8lLLb^Oex9nGCFU zENIXPhB-uVg(aJ2@fwSjH<|r*lPTw1m^9ty?}^L6!mM~1w4`M2`loJuH7RjH(&`Slgyk=}$T;HEdYZjWbMVpaloX zH+uc;C+`yB+X6ugyT%jFjax^3FW(|(S439!Js`pq~9$81P ze+=e*r$^T@;nXQmc7YHn@j_x@|CM(pX6`n5|Jr_*^dT`)XZ~$y(i1C{;_!%65nh8i zbKiE1+ZA-DA?EA}6Am)E*&3!46EH&_hy}M1>%}NGP|0U)X{PcZJ*l^wf}u1X@B9SE zBp!i0%i#)vwJE5t;wx5NuPnzeVyUUSRlzO$fJv5#Z53I^QCLIru=tAi@Y+xQxD?yC z1;zK*3F3`|4i@FG`!LE6q^0+XhrIE77;MkCwQW_jq+H-AEflRto2+`wp4CkunQfz-HK>zv^Nrc&CTK&+?hn-)!CHk#Rzup7+M7fCzATYRoFx34^ ziOY^09ay(EX*^alyOw%ISHI!I&cRy8yB=37xjN6_32}3G7cm8VYUvHK5u`9(FFsgw zMDAT4j90x^A(&9+emqRFzdkz<8E7k|dbt|!y8th4#BC$?i;WwqF8h*g_ERV`L;BTn zuH#pYCl43Vy5OTCUc_1CylsNWgQ-TVqZ6GJ=Nvq7!Jn~}(vpUH97Y8TeSoN~_X=#= z=E60`tY^_>1Dh}*I3W+q0gMBw%34_S$@WgTQ<4`aSOcYNfRHM zgO9iMFz3-HTKojwr@uU5x@-+^U@uknUmyqEZ(MuJOJ0fYiMOC#u}Wu%&m-kBo1AOn zJ?{=DUnh}gPb?G)9j4b*UCksFyM+R#4yCj-Ea=W+Dw!}9;+W60{~V|gz<20BB@c_T zq>9lKc@MOM!p=UaSMCOmhq2-HsDoLrh5CK&U%S4%I&p}Ed!thw1f7SdZ|6G*g)*cQ zw}sdjIE>!wd)#jS5!M)&SnQoPL&=P#1&yk#_2Qv_Y_q70V+*sTnzeBLNL59(s+fDs zfAh=*nRVyd`h@M=x)7TBi@7KjD}~|9K@2ixN@k6}O3cW8Gl88h534 zG4H(Z%Fq1H8&X%%x^5Q=BZ0W!H~O{9iOC#oz}Z*kKgrLa;3qne)Fn<~|422SObE?| zmV$PAM8|D{&aN?5pDq}<>iDO0wIEnoEsW?ovi(r~QJ&chAVF!?=s%Rypg96gU_#i? z_T)dG5XVvLi7f92fLuikL7nO3t&BlrTb2+1n;54De;7g0@eFBtl22C#4<9)avw)-B zR`281)ML!u-MM}oRjm;=L-rfEVI`rSqhIGFFC1Ur8_W+u!W9wjcZ-gM?WqbJiv35> zv07ebZTaK-ziU3ap_Jlh#Jn9E6uev0Ee+c0Dy>GH=eyYF`Rk6H|p>ntd0}L9N$FTni##)2abOd>Wlqf7lmcg?Y_M&MPzgf{?>2 zeev;@pUE^F?Q+?N?U5=%6sw$wYk>xpW23UKOPVZyRI9Pu4(~;m6#BYjA_UE{*}zs6dkh>_#-9k;I3d?84v;cC-N zWeOq%&TROxd#UO+(D=kAZn^R)4LtFQb>7wxSi#~y|AEX>_8IT#(;Ew%#^BM6hj}T9 zsb=ttKIyzQ-3Thz$s#B?+dpHd z+=;D!nF|A9HMo{JUWBLlqI-;PcWqKA)dZd%%pIhdKc&kvz_(Bm3(m|TwCNGE%%N$r z2$Im@(Y3tHJL7Bu*M1GMNRC{r_^x^F6jUIMUtnD#t!}_I=B1KWvS4dF>-k9DCwu~) zhBuvgUW{SI(%7FVzEn?dL4b+}yUW^aA1U5!pyJx@$RWAAN~tNMedGSrSQ5>1$-U-h zbiA?Y>%4q0CeTCO#X#mJELNveJ^e8P4E!0t%otI(va(5JjL=tJv-9WnewOou@DRP{ zY&@1%qFgYM-Z|yKy;s?L`Da1ui7gLNlmRT#d{Mf%NfQy!obmaYxo5WCRnXG^$FzP> zz;EL0c;Mb4P~YPFRlx_k)<139yn=Qza5)qjRRAJP&_Pho4<8!5uw} zDHDB`LHTsQ>tdx2-=bu1$??XaVlt=Qk;r?I1nn~7^2Ya(j~Bzb?_>*#bWOiJKZ1&W zhJF6Zd_>x*^6m*1%w$O?L9D0n#azDXLhZ)bk!s9AN_zQp0K;5!n_i=5pT@Ia?_0X> zFzFAo-h%;}1){eMgrm%-#oV_gORiSxyoKe3*QsiVH+q?VEv&U5CyEwCj$O-*1;RK^ zIejc3h~)vAx#fDTOX|1{wP<3CFivRnsF7zW@FCz6SeHZ4vIceEU{S|=9jXQH@#TcS zr77o5#T|~(_F;SU#x1$%?D32F@~pY}vA|11Ry+#$S8XJD7X32$x=0y+oF2@gIZ(}H8>RWg{m~!*{?V>AAUm0eRj||avG~8CXSJ{lr-C-%KV!& zKQ-Lv#O2sF4t9TI`rV!t{aqX0wT26ArEq|(NfKuj_UREc&vQw&Iquv!XZVhMECUxm zT1BN#K1$(Iwote(n%~tp>_eoCF=rf7TO*BLC-bI)CY2c$OwX`0$-R}f>EREne(@_E zS=vHRw^-1$ClxE)_gSH*0I`SkeBifBoa44x;#Vwz>_K~KbX`8s#JB$-UveN) zT7Cze$br!L8+yQLtSL;n^yzQ5NvudjAGnb+8`xk-d3)v#fpIH6km z`p8eOe%Enb`&an)D%>mJoWBZvcla)6=tfh zpS!|qEYweumLo&26O^*OX{ntjf$3(mEAyM$_)~$OST6G&l+*s{IjM~@wJ+TXTDMqH WzLyy+Lj79=qN54ic(48-^uGXLahsh0 literal 0 HcmV?d00001 diff --git a/localization/zh/marker/etc/MarkerDiagram.ucls b/localization/zh/marker/etc/MarkerDiagram.ucls new file mode 100644 index 000000000000..0f8376e40e23 --- /dev/null +++ b/localization/zh/marker/etc/MarkerDiagram.ucls @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/localization/zh/marker/etc/marker.urm.puml b/localization/zh/marker/etc/marker.urm.puml new file mode 100644 index 000000000000..02af47ddf261 --- /dev/null +++ b/localization/zh/marker/etc/marker.urm.puml @@ -0,0 +1,2 @@ +@startuml +@enduml \ No newline at end of file