From e022bafbddc4aa487d51f15118a2ae1a36f9a262 Mon Sep 17 00:00:00 2001 From: anny0739 Date: Sat, 25 Jul 2020 23:32:45 +0900 Subject: [PATCH 1/9] =?UTF-8?q?Command=20=ED=8C=A8=ED=84=B4=20=EC=98=88?= =?UTF-8?q?=EC=A0=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +++ build.gradle | 21 +++++++++++++ .../AddComissionedEmployeeTransaction.java | 15 +++++++++ src/main/java/command/AddEmploy.java | 16 ++++++++++ .../java/command/AddEmployTransaction.java | 31 +++++++++++++++++++ .../command/AddHourlyEmployeeTransaction.java | 13 ++++++++ .../AddMonthlyEmployeeTransaction.java | 12 +++++++ src/main/java/command/Client.java | 17 ++++++++++ src/main/java/command/Transaction.java | 8 +++++ 9 files changed, 137 insertions(+) create mode 100644 .gitignore create mode 100644 build.gradle create mode 100644 src/main/java/command/AddComissionedEmployeeTransaction.java create mode 100644 src/main/java/command/AddEmploy.java create mode 100644 src/main/java/command/AddEmployTransaction.java create mode 100644 src/main/java/command/AddHourlyEmployeeTransaction.java create mode 100644 src/main/java/command/AddMonthlyEmployeeTransaction.java create mode 100644 src/main/java/command/Client.java create mode 100644 src/main/java/command/Transaction.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49329a7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.gradle/ +.build/ +.idea/ +gradlew* \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..25eaeef --- /dev/null +++ b/build.gradle @@ -0,0 +1,21 @@ +plugins { + id 'java' +} + +group 'org.example' +version '1.0-SNAPSHOT' + +sourceCompatibility = 1.8 + +repositories { + mavenCentral() +} + +test { + useJUnitPlatform() +} + +dependencies { + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.3.1' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.3.1' +} \ No newline at end of file diff --git a/src/main/java/command/AddComissionedEmployeeTransaction.java b/src/main/java/command/AddComissionedEmployeeTransaction.java new file mode 100644 index 0000000..4541b16 --- /dev/null +++ b/src/main/java/command/AddComissionedEmployeeTransaction.java @@ -0,0 +1,15 @@ +package command; + +public class AddComissionedEmployeeTransaction extends AddEmployTransaction { + private double commission; + + public AddComissionedEmployeeTransaction(String name, int employeeId, String address, int salary, double commission) { + super(name, employeeId, address, salary); + this.commission = commission; + } + + @Override + public void execute() { + System.out.printf("%s 직원은 월급을 %d원을 받고 추가 수수료율 %f%%를 적용합니다.\n", this.getName(), this.getSalary(), this.commission); + } +} diff --git a/src/main/java/command/AddEmploy.java b/src/main/java/command/AddEmploy.java new file mode 100644 index 0000000..d031cc4 --- /dev/null +++ b/src/main/java/command/AddEmploy.java @@ -0,0 +1,16 @@ +package command; + +/** + * Invoker + */ +public class AddEmploy { + private Transaction transaction; + + public AddEmploy(Transaction transaction) { + this.transaction = transaction; + } + + public void add() { + transaction.execute(); + } +} diff --git a/src/main/java/command/AddEmployTransaction.java b/src/main/java/command/AddEmployTransaction.java new file mode 100644 index 0000000..b156352 --- /dev/null +++ b/src/main/java/command/AddEmployTransaction.java @@ -0,0 +1,31 @@ +package command; + +public abstract class AddEmployTransaction implements Transaction { + private String name; + private int employeeId; + private String address; + private int salary; + + protected AddEmployTransaction(String name, int employeeId, String address, int salary) { + this.name = name; + this.employeeId = employeeId; + this.address = address; + this.salary = salary; + } + + protected String getName() { + return name; + } + + protected int getEmployeeId() { + return employeeId; + } + + protected String getAddress() { + return address; + } + + protected int getSalary() { + return salary; + } +} diff --git a/src/main/java/command/AddHourlyEmployeeTransaction.java b/src/main/java/command/AddHourlyEmployeeTransaction.java new file mode 100644 index 0000000..4cbf0c0 --- /dev/null +++ b/src/main/java/command/AddHourlyEmployeeTransaction.java @@ -0,0 +1,13 @@ +package command; + +public class AddHourlyEmployeeTransaction extends AddEmployTransaction { + + public AddHourlyEmployeeTransaction(String name, int employeeId, String address, int salary) { + super(name, employeeId, address, salary); + } + + @Override + public void execute() { + System.out.printf("%s 직원은 시급을 %d원 받습니다.\n", this.getName(), this.getSalary()); + } +} diff --git a/src/main/java/command/AddMonthlyEmployeeTransaction.java b/src/main/java/command/AddMonthlyEmployeeTransaction.java new file mode 100644 index 0000000..769d42e --- /dev/null +++ b/src/main/java/command/AddMonthlyEmployeeTransaction.java @@ -0,0 +1,12 @@ +package command; + +public class AddMonthlyEmployeeTransaction extends AddEmployTransaction { + public AddMonthlyEmployeeTransaction(String name, int employeeId, String address, int salary) { + super(name, employeeId, address, salary); + } + + @Override + public void execute() { + System.out.printf("%s 직원은 월급을 %d원 받습니다.\n", this.getName(), this.getSalary()); + } +} diff --git a/src/main/java/command/Client.java b/src/main/java/command/Client.java new file mode 100644 index 0000000..001613b --- /dev/null +++ b/src/main/java/command/Client.java @@ -0,0 +1,17 @@ +package command; + +public class Client { + public static void main(String[] args) { + AddHourlyEmployeeTransaction addHourlyEmployee = new AddHourlyEmployeeTransaction("김아름", 1, "임의의 주소", 10000); + AddEmploy addEmploy = new AddEmploy(addHourlyEmployee); + addEmploy.add(); + + AddMonthlyEmployeeTransaction addMonthlyEmployee = new AddMonthlyEmployeeTransaction("김직원", 2, "한국 임의의 주소", 1000000); + AddEmploy addEmploy2 = new AddEmploy(addMonthlyEmployee); + addEmploy2.add(); + + AddComissionedEmployeeTransaction addCommissionedEmployee = new AddComissionedEmployeeTransaction("김임원", 3, "미국 임의의 주소", 10000000, 10); + AddEmploy addEmploy3 = new AddEmploy(addCommissionedEmployee); + addEmploy3.add(); + } +} diff --git a/src/main/java/command/Transaction.java b/src/main/java/command/Transaction.java new file mode 100644 index 0000000..4c2dd2d --- /dev/null +++ b/src/main/java/command/Transaction.java @@ -0,0 +1,8 @@ +package command; + +/** + * Command + */ +public interface Transaction { + void execute(); +} From 966a74306e99bf6e1226422add83e2b58c83ccb2 Mon Sep 17 00:00:00 2001 From: anny0739 Date: Sun, 9 Aug 2020 14:37:48 +0900 Subject: [PATCH 2/9] =?UTF-8?q?=EC=8B=B1=EA=B8=80=ED=86=A4,=20=ED=85=9C?= =?UTF-8?q?=ED=94=8C=EB=A6=BF=EB=A9=94=EC=86=8C=EB=93=9C,=20=EC=A0=84?= =?UTF-8?q?=EB=9E=B5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AddComissionedEmployeeTransaction.class | Bin 0 -> 1196 bytes .../classes/java/main/command/AddEmploy.class | Bin 0 -> 495 bytes .../main/command/AddEmployTransaction.class | Bin 0 -> 913 bytes .../AddHourlyEmployeeTransaction.class | Bin 0 -> 974 bytes .../AddMonthlyEmployeeTransaction.class | Bin 0 -> 977 bytes build/classes/java/main/command/Client.class | Bin 0 -> 1289 bytes .../java/main/command/Transaction.class | Bin 0 -> 135 bytes .../java/main/templatemethod/Client.class | Bin 0 -> 750 bytes .../java/main/templatemethod/Direction.class | Bin 0 -> 953 bytes .../main/templatemethod/Door$DoorStatus.class | Bin 0 -> 1056 bytes .../java/main/templatemethod/Door.class | Bin 0 -> 717 bytes .../main/templatemethod/HyundaiMotor.class | Bin 0 -> 913 bytes .../java/main/templatemethod/LgMotor.class | Bin 0 -> 661 bytes .../templatemethod/Motor$MotorStatus.class | Bin 0 -> 1075 bytes .../java/main/templatemethod/Motor.class | Bin 0 -> 1476 bytes build/libs/design-pattern-1.0-SNAPSHOT.jar | Bin 0 -> 261 bytes build/tmp/jar/MANIFEST.MF | 2 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58695 bytes gradle/wrapper/gradle-wrapper.properties | 5 +++ .../singleton/InitializeOnDemandHolder.java | 15 +++++++ src/main/java/singleton/Singleton.java | 12 +++++ src/main/java/templatemethod/README.md | 8 ++++ .../java/templatemethod/motor/Client.java | 9 ++++ .../java/templatemethod/motor/Direction.java | 5 +++ src/main/java/templatemethod/motor/Door.java | 26 +++++++++++ .../templatemethod/motor/HyundaiMotor.java | 12 +++++ .../java/templatemethod/motor/LgMotor.java | 12 +++++ src/main/java/templatemethod/motor/Motor.java | 41 ++++++++++++++++++ .../templatemethod/sorter/BubbleSorter.java | 26 +++++++++++ .../sorter/IntBubbleSorter.java | 21 +++++++++ .../java/templatemethod/template-method.jpg | Bin 0 -> 159738 bytes 31 files changed, 194 insertions(+) create mode 100644 build/classes/java/main/command/AddComissionedEmployeeTransaction.class create mode 100644 build/classes/java/main/command/AddEmploy.class create mode 100644 build/classes/java/main/command/AddEmployTransaction.class create mode 100644 build/classes/java/main/command/AddHourlyEmployeeTransaction.class create mode 100644 build/classes/java/main/command/AddMonthlyEmployeeTransaction.class create mode 100644 build/classes/java/main/command/Client.class create mode 100644 build/classes/java/main/command/Transaction.class create mode 100644 build/classes/java/main/templatemethod/Client.class create mode 100644 build/classes/java/main/templatemethod/Direction.class create mode 100644 build/classes/java/main/templatemethod/Door$DoorStatus.class create mode 100644 build/classes/java/main/templatemethod/Door.class create mode 100644 build/classes/java/main/templatemethod/HyundaiMotor.class create mode 100644 build/classes/java/main/templatemethod/LgMotor.class create mode 100644 build/classes/java/main/templatemethod/Motor$MotorStatus.class create mode 100644 build/classes/java/main/templatemethod/Motor.class create mode 100644 build/libs/design-pattern-1.0-SNAPSHOT.jar create mode 100644 build/tmp/jar/MANIFEST.MF create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 src/main/java/singleton/InitializeOnDemandHolder.java create mode 100644 src/main/java/singleton/Singleton.java create mode 100644 src/main/java/templatemethod/README.md create mode 100644 src/main/java/templatemethod/motor/Client.java create mode 100644 src/main/java/templatemethod/motor/Direction.java create mode 100644 src/main/java/templatemethod/motor/Door.java create mode 100644 src/main/java/templatemethod/motor/HyundaiMotor.java create mode 100644 src/main/java/templatemethod/motor/LgMotor.java create mode 100644 src/main/java/templatemethod/motor/Motor.java create mode 100644 src/main/java/templatemethod/sorter/BubbleSorter.java create mode 100644 src/main/java/templatemethod/sorter/IntBubbleSorter.java create mode 100644 src/main/java/templatemethod/template-method.jpg diff --git a/build/classes/java/main/command/AddComissionedEmployeeTransaction.class b/build/classes/java/main/command/AddComissionedEmployeeTransaction.class new file mode 100644 index 0000000000000000000000000000000000000000..0ee4225cc67860c6973e16d6d53d050f280d3b19 GIT binary patch literal 1196 zcma)6TTc^F5dKbYOVXLSsbhkv_B;f&r z4?bXGL=qA;${XI081)DEQ|S5^jI-M<3cMX3m_+obUV2%$)uG_xmpZmvKjg1UZO9 z=nmo(PB-9;fQU%@9><&&5k*Wy9K9mWp-(`+fCPh>Gm1scG&MtKU@3;cfTnBKAVWNw znO0_%L_yK>iL6!9^n5bCPbd`|WAF_bDracUXgVJ*7bkgXRGBPLq%~vYl){)&(wu!Q z=(8SaCPQz=Ay;%YaaUD`jG7Ft-Yd=&j5*FnONwqPIg7L=7D0HUj$|=wluJ2&Uvp&k{8vH0Lo1;f=Or|vNx%gO z7jcPUG-As3`+0lixxM;CwpW(7x1QRo3vxttLkn_cV`cmEnrv?_Z*Ne-;!FA}Z=Tt& zKgf}(NTl-ahitFS+ppIDyjZU+EmoG^_KOUmookLvPV<~4QIoGoxQc56u1mOqn*x%~ zIw0VdghAY9h#k0~3|)1()r!~Eo1hNZey5amTC;Pe#fwy9qiivRtMj56i3c=47EKXX ziquOX&#hs%o$b-s-kD+uQbM-YIBFMlv}LCrY2D&^ULu%TrBLQ0Qw$x^bUjWjgP7{1 zrHryWlHq8oKDQdC)Hau4w^o{;8Amx$4D3^ohjrSkT}sxVcf%ynO>a=5hsxk_#)mu) z`OOHCZK0h7KLlDs@!qb!u`o{w&3E7>M^$qERffzAcdM!P`-$cE64Fs+W) zfy0F8c%3*x9FBLCV$RtRj#13#dX5G^Wp?3sO~E)}J11kG;BEBxzFL9ia2{0DyRJ6r$& literal 0 HcmV?d00001 diff --git a/build/classes/java/main/command/AddEmploy.class b/build/classes/java/main/command/AddEmploy.class new file mode 100644 index 0000000000000000000000000000000000000000..28fb87711cd2f0bbc10638d25ae0786a08cb6160 GIT binary patch literal 495 zcmZvYO;5r=5Qg7rfx@;z1wqu4H^f9P9!xYQ#>k22LBf4$H(JsUQ;N}_Wuh^9@CW## zjI-s-gL`;)XXf2!GV}fO`32w@djdr?DkxyfMiVUy+ZNgcJ4g~ z-y5#er-ag35C_>gq22k{aWEnjE)!o7YJ(tF*RyD>(xDuOoT(2IPlh9z20C6O3)y`z zB{WvJ3*Wzr9>V0A+nLh$SvwjlZj)K+seYhQ)s^dLA|IuLGF%5GSQd61?7}5%E+<%7 z39dHxLK)xnZpIVkW!!ja`!guPQcud8WeWSes3I?pU}!wQ41SkUVHF(pIX3tf-FHy; z@D0XG?y*^`Fj@7g1*;8*qt@Jw4X)}Vaw;*c26w?c;hS`=`wHU&CSlDK`Tr{OYB|rD NI~P2jn*SN7{{jq8UHSk3 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/command/AddEmployTransaction.class b/build/classes/java/main/command/AddEmployTransaction.class new file mode 100644 index 0000000000000000000000000000000000000000..373ba05b46b9853476540507cc18adcfef27e6c9 GIT binary patch literal 913 zcmaKpO>fgc5Qg7%)-f?IX`6z79-u(Xg3&0Uxxp1)CKplI$JmF=Zm!}S%Ie6~i zg@8;|q6OB6XX>l!$10unM@1f`(_;ZwCtu?1LhC^&AO-@C3d3B_W&-t@idB9=$(tyR zinjv2?%fuHilg3`pzpJgpv_^F>XY+iqVrQViH(gcQ1Mvh5$_j=viKYka(5VHNutuQ z|1Jza7-y%sN@pr4qAVr5&QupCW}1y|?=D$jg$hbxIa00LqoG_nrH9^$^ z_IIOQ=Nh7bx=ZTUpzhqSMI&`6Ytf&hvJ*DYrXAO_6Jav;VwsHH)J(>DN#8?kF5L7f za=q>UfOSQQ1qRp6;hKSXWx)a>@rdx{D7VG6%O!EUQoL13mdoT$rTB3r*O_p+eDk1i%q;#Us41S#X#B$DV5@jlk6C`?4@ir#k?u_ zpytK*+Bd;h6|6TkWTA;IA`7!~zB%VR-+X6&{{Hp@z!Gk%P!W&dJZ48R zry!vsf}~t7sJMuE6)7wzxTGM>5MDNH!@I?hNtd_y4lkJ8t`{nvYuNQ-=@=-p!4SOT z=z?LqY}jJ8X;p>0&Z{ON(XvzH<_32S8T(++dulWo7Roipvbe1mZtMDer|FulyVkbp zw1il9x!vG3&v5J_vD@70aUIdapbEdFq%*J*gTi&)6%FDKH@L~&7D3{fs5L#J2&AQ2 zwL;Bm;+`QDCjZquFFR@&gQg&(A&VSCF4ahMKfLJfzU}TkPjuVwejU8-?!8Q;bb=C{ zkGtJBUpnnqo%Z{@$}n-Ld9Au7YMzG6Sk#b5LBSObS8+|jb&aNUgJJ%E3}J{5r1c#e z@N1}LrPc6+MfY}^9z(1@J;NzHplNzEQ^76rSE&ncwP*2kI&*Zw3=vAG_-2xYcSG=g(~0E=n#hX4Qo literal 0 HcmV?d00001 diff --git a/build/classes/java/main/command/AddMonthlyEmployeeTransaction.class b/build/classes/java/main/command/AddMonthlyEmployeeTransaction.class new file mode 100644 index 0000000000000000000000000000000000000000..05b9ee57b5b6c3d24957ab466265b226f7d30376 GIT binary patch literal 977 zcma)4TWb?R6#gc+ZPwMcX;W{pO{=lF*u+cqB}EWX2&Ao$QYpST$&Trky_C(Sm^TF< z)V}!OTj-nMs|wa4=nwFxnEVFuOtR3VEg}oEbG|v}JKua~e*O9W6Tl+ws8ErJ;u5Au zFry%;B8pkL%&EAHD=JdBs$gD0njx}e*oJqPA(Jj|@f}_;xm_<*JlC-6#nK5-W}P8) z-_ZrbXxXsEO4F(eca2v~LSkj7#?5u^8Z!35khf_x80O10$FjJs7w+l$vSWLjX6u2q zZ8|L>)?98kc+E2$yGZmlw|Zp91Tm<>FDdB^ti+&jU3W!;8bli0cU&;nLL@!93L`6loBewon#{U zJbrkulI@AQaEWGzn@zF$jA1HW8szaasMAERY*+w|YFo;ox}_6d-ID=9eG7{|_b^Qn zv-GA_dh&^NHpy__==qg>Ew6cLQlZn2+;?*?oj78zK5d4xm)_G4lAR W1QpXHSxS(ysoa;qaDk!#F8&49BK5`q literal 0 HcmV?d00001 diff --git a/build/classes/java/main/command/Client.class b/build/classes/java/main/command/Client.class new file mode 100644 index 0000000000000000000000000000000000000000..a5899fee6cc77c8dcf68fd1a54f88c3c48f96c59 GIT binary patch literal 1289 zcma)6T~E_c7=F5TZC3`{DgskcR6e#bm;$0QKY%I0WWWW4WHHf{t$~uQHCr*^4in;) z7v5k<{J1gED`ULSsThBN|3sL7!T6qaK%GErn)C5K?|Gj0Jm<7Oet-QAUAEaM7~!1$;FAH%Q87?F|WvH5IG9PK0~dK5I_nuO~T zZg3E<8Kz;=fR9AyIS45$r*jCT4O5?9DJy?+A^mbHUf2%xx!l-VN)h;T>AO?*3F~)?tT*vUhUsGhz@=r_CYupJcb9^Eiv+^xd+@1M&uK)P`x6pq``N z8!LnRP=!xWD^`O%PSV)#B;XXhEvClTmp=6+%71GQ8<6h?(9p zq^bBP$XoDbRK=?{sQxkN98p9lCJ;-A#xc^#kWMefm>qFq@SyJxAsAgt literal 0 HcmV?d00001 diff --git a/build/classes/java/main/command/Transaction.class b/build/classes/java/main/command/Transaction.class new file mode 100644 index 0000000000000000000000000000000000000000..9202725b0e7161fef8a16416265272bacd5f60d2 GIT binary patch literal 135 zcmX^0Z`VEs1_l!bPId-%b_Nbc2KLm7)a25VR7M774b3n{2Cm@z(xT*4x6B-%kU&UL zVqS4#a!F=>o?cdBSt28YaB_ZbZem`FK9UqrAxKg`CowNw-#;lUHMxY1k%5tc31}4q U10xI2Yz7t(i-8qLGBL0L0H2T_djJ3c literal 0 HcmV?d00001 diff --git a/build/classes/java/main/templatemethod/Client.class b/build/classes/java/main/templatemethod/Client.class new file mode 100644 index 0000000000000000000000000000000000000000..5f15f7dff1d97f7ed0caf469e5315cadf23a4927 GIT binary patch literal 750 zcmZuv%TC)s6g`uem^cPPC=edu(LzZmYBubsx*^zs`)u{LddwDCzG z_f3T={w|QM)|vv=q3-wsGoA|l)8U}yM;EdcFjDe#TLw)TDdRr}t+=Od1Qxy6AN&X; zPe1PIPW>=Yei$E+ZXi`Cuu#4B`tnxR0~vPf=W(RM?m^N{MqLuj{U^=hj@FUDe44$% zFuC2{&tce+>O{u|R!PH--=qn5&h;>A`$x)5Qy44!YDBqkP@sm?45o{~N-Fx6)D&*n z*mm(5J1(lIQEUo7?julq9sjJ=_uH{Rxtdm-3})6+PO&sp#1f^sN~>{pc`C5{uJ#3z zY+c`S$jbW$|3I}SHZjR3V!jNx9u#=G^y<6??}^yX`bUelr4YL}a>M&r*!Omk^r=l$p z)jUdaUe&P1klBCBP;nx6@X6yey3tW^SlFUs4>jlbTJ0Xs2f?<(mWGNyT+2^aEOTb@2?jFL607cXeFDlC+L{F=iQg z+{bcakIr{)u~B5!n1J zpw19&X&t@IAm_W!wYP1ZA@^>6RP4;K$AV$IQ2Y-#Z@I@N!?I>M=HYnQGrc!P&!!hS z$kTbxP%CJs#+gyE4QEi%ea~_R_2PUXDb4L0cGvJMk#L%oJI0Wbr~b~!5NlYDzgkvQF%g4 zp)5*PkrFdct9XK{j6H_Ue@{)tI-aVyi%k`aNUB&tl3{7qKB0&v+qYeZm{tqLklIe~ z)a?7DCVc}5!?SQ#f<3B-g8$6rI#<0}rL9zHm8E7zNCN04RX{Q;sv{3a0;^a9HJ+^d zbc;`!fPF^f64FPq7;e)U3w&#YUq@z&uOSk=Dk)z2g6JiPKqfuDLr zD8X2TL_Z*xb~Y{$`xLmtbhB_7_k?t81(+P-BsVt|@`?%(U-=vOQA(CB5I;vEFccmb x3(@c7k|wl3M|^?>{TxiNT@|O09FU+awL+RQY$H!^5j?;$-3lQ&idbr9egoOS=UV^( literal 0 HcmV?d00001 diff --git a/build/classes/java/main/templatemethod/Door.class b/build/classes/java/main/templatemethod/Door.class new file mode 100644 index 0000000000000000000000000000000000000000..bc8bcd89a18d26190900c740ef4b94eba6758f73 GIT binary patch literal 717 zcmZuu%TB^T6g^W5g;GKBi4RobLS5K}#*N09ASNb6Ofc*Rm|#t5O(}kt8jXnyKfsSN zo)M#Hy1B2p=P@(yAFpo!_EE8sMk$LFma?$0tiy_hRSRVcYXbIZ7)H%l#>0Vta~=dL zs`_#;P;Bk)*x7nLR{dLFGOGAG?7AAb`HMajNFRBD7at2uY;Cs$%xc(G0)@I4sEc90 zt)eU0_Bkom!;bV@GV*l)Jv8HMkD7ByGUT4@srXk+pt7}{wE5SN8Q!WuAl3210d?(W zIE*^#%+n^anr-(+-bn`zCLP$wIat?W137`2gzE}SX@Kj?pyxK)H>wj0loJ-mZ15c# zm$eJJsMZ_J8p%`q5kSDulB`VDbikNrx5q4)Q#&sZ4=fB67;R<{X!8H2SUIC5Oryw- zb}`GS30&q8!4r&o4n_p&uc4g?p8HWh;I;;5b{;YD4CB9nJmm{x9GM>j^NAd00!NV? XGYK397QWmrBFk*khsC$boRmHRI1GTY literal 0 HcmV?d00001 diff --git a/build/classes/java/main/templatemethod/HyundaiMotor.class b/build/classes/java/main/templatemethod/HyundaiMotor.class new file mode 100644 index 0000000000000000000000000000000000000000..15cde2786a5781f8ef62b079b4c79f423ac25b42 GIT binary patch literal 913 zcmaKr+fLg+5QhKF!A@MaK*Fh}v;lf>NWndDN5w^3RlNwbDpjOjZsHXza=ejQBk@?} zB1o;&2k1jpopl1F4yrF^H8a1z{b$$y{pZIo06W-ma0e?@Jiw}rhYpH(R6)b6YbLCl zu;Jh_p4fP5;~9hXM#fU_F)aISE&79qQxy7Gg~5BJlHF#9q4Z9Lf?=jDV{wr7yCV6@ zyAf4tZPnvZhbPkH<6=o4%TtEcJnrLp8i!o&D@|B}hJ>AOxSi2;DwEsE?(g^!%FUKC--KU&vnOh&rTRP zKP3%AQKi}(TGo*&_)NYuxf8rk^A&w_T^1hw|~`6J!L2)oUx(s(L*{U80O?g<_7 zfAtluMh8O^_|sq_)^G92U=NJzD5gPfbJ)Qe%y(>_0+_iJiuWknqr5lf X^BvqLS2uj`n(tu=%fw}*FrK}?hZo;? literal 0 HcmV?d00001 diff --git a/build/classes/java/main/templatemethod/LgMotor.class b/build/classes/java/main/templatemethod/LgMotor.class new file mode 100644 index 0000000000000000000000000000000000000000..246200546c63a7b38b3ef3b8c0457e90886f9a0b GIT binary patch literal 661 zcmZvZ&rZTX5XQgdUuh|VAc!am>H#&8i#H94(deZZ6AbqP8(34iq%0&pmL4?m-~;$j z#%U=Yifyu+nfc~7U#H(cpI-njaBLujvW{(3(%3Oj#jb`u4K;?;m2ib>GgO+E;*+Uk z)5+CX4qLZUdY30XhQy5=a)z8GT>dbh^ttzB_Z`XUm+ zag6TN>DdR^Yfv}nG=gk0=*m!BUaDXsOA+a@fgCXs$YV2PU570F4Y5M}9f>H;ps^Wx TS2+C-r=x%(VQ5cOjiK}lSAv%> literal 0 HcmV?d00001 diff --git a/build/classes/java/main/templatemethod/Motor$MotorStatus.class b/build/classes/java/main/templatemethod/Motor$MotorStatus.class new file mode 100644 index 0000000000000000000000000000000000000000..1a56acc409921abababf46eb4bd2b6b8c9dd1351 GIT binary patch literal 1075 zcma)4QEw7K5dM}sI5@5?rKkm~(v~VmD~O^mkOos*gQ2C#Rg%W1gP!!7~P&xKtSw>Gn!S;M;Dms!u~E+4Q=m(>8sZhaAV1U9(T&lmEx0 z7S?Rn4mKI?-jK4Pw;AN%*rw`YhTU_izdl8h^4t)ub)B(uWg_&pJM7nP=ekKvR}F9I zcdZ?pSFef>De}5CB>4<1Xn2OQg69m`+rCi4B3@{CfQK4pkkBxX1jFoA7db74aM$r% zN|ws&6O>z>6RR5#q0~)j7+y~HM$A=p!u#Lk{c!6Y* z5km@hK8{)rJmS=m6_{m2iSF{4$U7>8ui_8Lhe<^` zNAwIap{TM@;^CiUl14N}hw=z<;|z>vyDUy6IzRy#=tL(=_YhW*6LJl6BvnGnWSy<2 F{{p^t@N578 literal 0 HcmV?d00001 diff --git a/build/classes/java/main/templatemethod/Motor.class b/build/classes/java/main/templatemethod/Motor.class new file mode 100644 index 0000000000000000000000000000000000000000..0592cf5d53492469b55513c79f4646608ec32633 GIT binary patch literal 1476 zcmZuxYfl>+p3n95XcjlgR@40h_zyE&!0kDeCL4>dpfR5(@gz-YIUIuAarTZ#~HM|bs z8Q#d%TY2zKnsp5u8s2Nz6zIuVwpBf{4g0Dlpzl{IW_7z{)M_SOwP0CQfyjYvmM=>N zt!bZIg;bi`>%^8@v2)%ihdJ89Pl$h`SSi}fI~wzbJEZXwX5F?5raJJYT9m%KsoLj7mOAXEbMi8yc4pd=T3{p=_XfE_!i;IDQy|(N+DT2g z=D{trscMHg63f;#1x>bvr;AlHZx^k~x(o{xny$cjTkXv=iVPO0uyKhRKG2uKnwL7$ zhU8)NF@pFIWAk4##--C#4u-=LkX1SY$arL3RrBUvQ*<8Lbt_>X#Z0YF7fR2wC z(lIE_6sC22!jOh-9ck?7*hO5&o(x^Wyp9>n3JiJ1%1zZLc~d2$a+b=SUa%bkGo2z^ zM@wMJ6C(Ash!p6G$(CwI$GOA9ois-=lRMeZ?gV1*&Y2vtoPr^@Fbp!?YvxzA!@Jw?FXEVWR!M* z6o5wCjR1dr2x5#o!wn$DF+qQ+ z4qs;R7XBMjN=bES*`-@_-yqm<1BqmvYlhU(BYW882%cj9zTMNk>jC~6`n1y0w0o2O$t#Hc#1eV6J!fRxkpGt@*WWli>fNeoBIlu9h>4!$=g#H QsiSvmjQ_@Kh;5Di2U#LHCjbBd literal 0 HcmV?d00001 diff --git a/build/libs/design-pattern-1.0-SNAPSHOT.jar b/build/libs/design-pattern-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..0c42abcd016f5cf8f560f04997b3d268af1d5400 GIT binary patch literal 261 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1b16c34 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/src/main/java/singleton/InitializeOnDemandHolder.java b/src/main/java/singleton/InitializeOnDemandHolder.java new file mode 100644 index 0000000..d477048 --- /dev/null +++ b/src/main/java/singleton/InitializeOnDemandHolder.java @@ -0,0 +1,15 @@ +package singleton; + +public class InitializeOnDemandHolder { + private InitializeOnDemandHolder() { + } + + private static class LazyHolder { + static final InitializeOnDemandHolder INSTANCE = new InitializeOnDemandHolder(); + } + + public static InitializeOnDemandHolder getInstance() { + return LazyHolder.INSTANCE; + } + +} diff --git a/src/main/java/singleton/Singleton.java b/src/main/java/singleton/Singleton.java new file mode 100644 index 0000000..12f4413 --- /dev/null +++ b/src/main/java/singleton/Singleton.java @@ -0,0 +1,12 @@ +package singleton; + +public class Singleton { + private static Singleton singleton; + + public synchronized Singleton getInstance() { + if (singleton == null) { + singleton = new Singleton(); + } + return singleton; + } +} diff --git a/src/main/java/templatemethod/README.md b/src/main/java/templatemethod/README.md new file mode 100644 index 0000000..bf36cd6 --- /dev/null +++ b/src/main/java/templatemethod/README.md @@ -0,0 +1,8 @@ +# 템플릿 메소드 패턴 +객체의 연산에는 알고리즘의 뼈대만을 정의하고 각 단계에서 수행할 구체적 처리는 서브클래스 쪽으로 미룹니다. 알고리즘의 구조 자체는 그대로 놔둔 채 알고리즘 각 단계 처리를 서브클래스에서 재정의할 수 있게 합니다. + +![구현된 Motor UML](./template-method.jpg) + +[참고] + https://gmlwjd9405.github.io/2018/07/13/template-method-pattern.html + GOF의 디자인 패턴 \ No newline at end of file diff --git a/src/main/java/templatemethod/motor/Client.java b/src/main/java/templatemethod/motor/Client.java new file mode 100644 index 0000000..58204cc --- /dev/null +++ b/src/main/java/templatemethod/motor/Client.java @@ -0,0 +1,9 @@ +package templatemethod.motor; + +public class Client { + public static void main(String[] args) { + Door door = new Door(); + HyundaiMotor hyundaiMotor = new HyundaiMotor(door); + hyundaiMotor.move(Direction.DOWN); + } +} diff --git a/src/main/java/templatemethod/motor/Direction.java b/src/main/java/templatemethod/motor/Direction.java new file mode 100644 index 0000000..5263d95 --- /dev/null +++ b/src/main/java/templatemethod/motor/Direction.java @@ -0,0 +1,5 @@ +package templatemethod.motor; + +public enum Direction { + UP, DOWN +} diff --git a/src/main/java/templatemethod/motor/Door.java b/src/main/java/templatemethod/motor/Door.java new file mode 100644 index 0000000..dab73da --- /dev/null +++ b/src/main/java/templatemethod/motor/Door.java @@ -0,0 +1,26 @@ +package templatemethod.motor; + +public class Door { + private DoorStatus doorStatus; + + public Door() { + } + + public DoorStatus getDoorStatus() { + return doorStatus; + } + + public void open() { + this.doorStatus = DoorStatus.OPEN; + } + + public void close() { + this.doorStatus = DoorStatus.CLOSE; + } + + public enum DoorStatus { + OPEN, CLOSE + } +} + + diff --git a/src/main/java/templatemethod/motor/HyundaiMotor.java b/src/main/java/templatemethod/motor/HyundaiMotor.java new file mode 100644 index 0000000..54b80d1 --- /dev/null +++ b/src/main/java/templatemethod/motor/HyundaiMotor.java @@ -0,0 +1,12 @@ +package templatemethod.motor; + +public class HyundaiMotor extends Motor { + public HyundaiMotor(Door door) { + super(door); + } + + @Override + protected void moveMotor(Direction direction) { + System.out.println("Move Hyundai Motor " + direction); + } +} diff --git a/src/main/java/templatemethod/motor/LgMotor.java b/src/main/java/templatemethod/motor/LgMotor.java new file mode 100644 index 0000000..a821bde --- /dev/null +++ b/src/main/java/templatemethod/motor/LgMotor.java @@ -0,0 +1,12 @@ +package templatemethod.motor; + +public class LgMotor extends Motor { + public LgMotor(Door door) { + super(door); + } + + @Override + protected void moveMotor(Direction direction) { + System.out.println("Move LG Motor"); + } +} diff --git a/src/main/java/templatemethod/motor/Motor.java b/src/main/java/templatemethod/motor/Motor.java new file mode 100644 index 0000000..35e09ae --- /dev/null +++ b/src/main/java/templatemethod/motor/Motor.java @@ -0,0 +1,41 @@ +package templatemethod.motor; + +public abstract class Motor { + protected Door door; + private MotorStatus motorStatus; + + public Motor(Door door) { + this.door = door; + this.motorStatus = MotorStatus.STOPPED; + } + + public Door getDoor() { + return door; + } + + public MotorStatus getMotorStatus() { + return motorStatus; + } + + public void setMotorStatus(MotorStatus motorStatus) { + this.motorStatus = motorStatus; + } + + public void move(Direction direction) { + Motor.MotorStatus motorStatus = getMotorStatus(); + if (motorStatus == Motor.MotorStatus.MOVING) return; + + Door.DoorStatus doorStatus = door.getDoorStatus(); + if (doorStatus == Door.DoorStatus.OPEN) door.close(); + + moveMotor(direction); // overriding each class + + setMotorStatus(Motor.MotorStatus.MOVING); + } // template method + + protected abstract void moveMotor(Direction direction); + + public enum MotorStatus { + MOVING, STOPPED + } +} diff --git a/src/main/java/templatemethod/sorter/BubbleSorter.java b/src/main/java/templatemethod/sorter/BubbleSorter.java new file mode 100644 index 0000000..09dab9e --- /dev/null +++ b/src/main/java/templatemethod/sorter/BubbleSorter.java @@ -0,0 +1,26 @@ +package templatemethod.sorter; + +public abstract class BubbleSorter { + private int operations = 0; + protected int length = 0; + + protected int doSort() { + operations = 0; + if (length <= 1) { + return operations; + } + + for (int nextToLast = length - 2; nextToLast >= 0; nextToLast--) { + for (int index = 0; index <= nextToLast; index++) { + if (outOfOrder(index)) { + swap(index); + } + operations++; + } + } + return operations; + } + + protected abstract void swap(int index); + protected abstract boolean outOfOrder(int index); +} diff --git a/src/main/java/templatemethod/sorter/IntBubbleSorter.java b/src/main/java/templatemethod/sorter/IntBubbleSorter.java new file mode 100644 index 0000000..97302dc --- /dev/null +++ b/src/main/java/templatemethod/sorter/IntBubbleSorter.java @@ -0,0 +1,21 @@ +package templatemethod.sorter; + +public class IntBubbleSorter extends BubbleSorter { + private int[] array = null; + + public int sort(int[] theArray) { + array = theArray; + length = array.length; + return doSort(); + } + + protected void swap(int index) { + int temp = array[index]; + array[index] = array[index + 1]; + array[index + 1] = temp; + } + + protected boolean outOfOrder(int index) { + return (array[index] > array[index + 1]); + } +} diff --git a/src/main/java/templatemethod/template-method.jpg b/src/main/java/templatemethod/template-method.jpg new file mode 100644 index 0000000000000000000000000000000000000000..95f75831c0ee5d88be00e8aa2e900af1f64fc637 GIT binary patch literal 159738 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
+T&cQ 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
-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 a><@fHpRR+}y;LdwyQ Date: Mon, 10 Aug 2020 19:54:41 +0900 Subject: [PATCH 3/9] =?UTF-8?q?facade=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/facade/AirCirculator.java | 14 +++++++++++++ src/main/java/facade/AirMeter.java | 7 +++++++ src/main/java/facade/CarEngineFacade.java | 22 +++++++++++++++++++++ src/main/java/facade/Cooler.java | 22 +++++++++++++++++++++ src/main/java/facade/FuelInjector.java | 17 ++++++++++++++++ src/main/java/facade/FuelPump.java | 7 +++++++ src/main/java/facade/Radiator.java | 15 ++++++++++++++ src/main/java/facade/TemperatureSensor.java | 7 +++++++ src/main/java/facade/definition.md | 2 ++ 9 files changed, 113 insertions(+) create mode 100644 src/main/java/facade/AirCirculator.java create mode 100644 src/main/java/facade/AirMeter.java create mode 100644 src/main/java/facade/CarEngineFacade.java create mode 100644 src/main/java/facade/Cooler.java create mode 100644 src/main/java/facade/FuelInjector.java create mode 100644 src/main/java/facade/FuelPump.java create mode 100644 src/main/java/facade/Radiator.java create mode 100644 src/main/java/facade/TemperatureSensor.java create mode 100644 src/main/java/facade/definition.md diff --git a/src/main/java/facade/AirCirculator.java b/src/main/java/facade/AirCirculator.java new file mode 100644 index 0000000..b4a71ce --- /dev/null +++ b/src/main/java/facade/AirCirculator.java @@ -0,0 +1,14 @@ +package facade; + +public class AirCirculator { + private AirMeter airMeter = new AirMeter(); + + public void takeAir() { + airMeter.getMeasurements(); + System.out.println("Air Circulator take air"); + } + + public void off() { + System.out.println("Air Circulator off"); + } +} diff --git a/src/main/java/facade/AirMeter.java b/src/main/java/facade/AirMeter.java new file mode 100644 index 0000000..c37a89d --- /dev/null +++ b/src/main/java/facade/AirMeter.java @@ -0,0 +1,7 @@ +package facade; + +public class AirMeter { + public void getMeasurements() { + System.out.println("Getting Air Measurements"); + } +} diff --git a/src/main/java/facade/CarEngineFacade.java b/src/main/java/facade/CarEngineFacade.java new file mode 100644 index 0000000..8b32afc --- /dev/null +++ b/src/main/java/facade/CarEngineFacade.java @@ -0,0 +1,22 @@ +package facade; + +public class CarEngineFacade { + private Cooler cooler = new Cooler(); + private AirCirculator airCirculator = new AirCirculator(); + private FuelInjector fuelInjector = new FuelInjector(); + private static final int DEFAULT_MAX_TEMPERATURE = 25; + + public void startEngine() { + airCirculator.takeAir(); + fuelInjector.on(); + cooler.run(); + cooler.cool(DEFAULT_MAX_TEMPERATURE); + fuelInjector.inject(); + } + + public void endEngine() { + airCirculator.off(); + fuelInjector.off(); + cooler.stop(); + } +} diff --git a/src/main/java/facade/Cooler.java b/src/main/java/facade/Cooler.java new file mode 100644 index 0000000..64c3ce2 --- /dev/null +++ b/src/main/java/facade/Cooler.java @@ -0,0 +1,22 @@ +package facade; + +public class Cooler { + private Radiator radiator = new Radiator(); + private TemperatureSensor temperatureSensor = new TemperatureSensor(); + + public void run() { + System.out.println("Air Conditioner in ready"); + radiator.setSpeed(10); + } + + public void cool(int maxAllowedTemperature) { + System.out.println("Cooling maximum : " + maxAllowedTemperature); + temperatureSensor.getTemperature(); + radiator.on(); + } + + public void stop() { + System.out.println("Air Conditioner stop"); + radiator.off(); + } +} diff --git a/src/main/java/facade/FuelInjector.java b/src/main/java/facade/FuelInjector.java new file mode 100644 index 0000000..7e81c97 --- /dev/null +++ b/src/main/java/facade/FuelInjector.java @@ -0,0 +1,17 @@ +package facade; + +public class FuelInjector { + private FuelPump fuelPump = new FuelPump(); + + public void on() { + System.out.println("Fuel Injector in ready"); + } + + public void inject() { + System.out.println("Fuel injected"); + } + + public void off() { + System.out.println("Off Fuel Injector"); + } +} diff --git a/src/main/java/facade/FuelPump.java b/src/main/java/facade/FuelPump.java new file mode 100644 index 0000000..418feca --- /dev/null +++ b/src/main/java/facade/FuelPump.java @@ -0,0 +1,7 @@ +package facade; + +public class FuelPump { + public void pump() { + System.out.println("Pumping fuel"); + } +} diff --git a/src/main/java/facade/Radiator.java b/src/main/java/facade/Radiator.java new file mode 100644 index 0000000..45bc7ee --- /dev/null +++ b/src/main/java/facade/Radiator.java @@ -0,0 +1,15 @@ +package facade; + +public class Radiator { + public void on() { + System.out.println("Radiator switched on!"); + } + + public void off() { + System.out.println("Radiator switched off!"); + } + + public void setSpeed(Integer speed) { + System.out.println(String.format("Setting radiator speed to %d", speed)); + } +} diff --git a/src/main/java/facade/TemperatureSensor.java b/src/main/java/facade/TemperatureSensor.java new file mode 100644 index 0000000..df870a6 --- /dev/null +++ b/src/main/java/facade/TemperatureSensor.java @@ -0,0 +1,7 @@ +package facade; + +public class TemperatureSensor { + public void getTemperature() { + System.out.println("Get Temperature through sensor"); + } +} diff --git a/src/main/java/facade/definition.md b/src/main/java/facade/definition.md new file mode 100644 index 0000000..7687c8b --- /dev/null +++ b/src/main/java/facade/definition.md @@ -0,0 +1,2 @@ +# Facade +한 서브시스템 내의 인터페이스 집합에 대한 획일화된 하나의 인터페이스를 제공해 서브시스템을 사용하기 쉽도록 상위 수준의 인터페이스를 제공한다. \ No newline at end of file From 24a79284fd4e93c5e06cea7e65e3ca3f77f633e1 Mon Sep 17 00:00:00 2001 From: anny0739 Date: Sun, 30 Aug 2020 10:33:39 +0900 Subject: [PATCH 4/9] =?UTF-8?q?=EB=A9=94=EB=94=94=EC=97=90=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=ED=8C=A8=ED=84=B4=20&=20=EC=A0=84=EB=9E=B5=20?= =?UTF-8?q?=ED=8C=A8=ED=84=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/mediator/ApplicationMediator.java | 24 ++++++++++++++++++ src/main/java/mediator/Client.java | 15 +++++++++++ src/main/java/mediator/Colleague.java | 21 +++++++++++++++ src/main/java/mediator/ConcreteColleague.java | 11 ++++++++ src/main/java/mediator/Mediator.java | 5 ++++ src/main/java/mediator/MobileColleague.java | 11 ++++++++ src/main/java/mediator/definition.md | 6 +++++ src/main/java/mediator/mediator.jpg | Bin 0 -> 27798 bytes src/main/java/nullobject/definition.md | 4 +++ src/main/java/nullobject/nullobject.jpg | Bin 0 -> 25260 bytes src/main/java/strategy/definition.md | 6 +++++ src/main/java/strategy/strategy.jpg | Bin 0 -> 35089 bytes .../java/templatemethod/motor/Client.java | 2 +- 13 files changed, 104 insertions(+), 1 deletion(-) create mode 100644 src/main/java/mediator/ApplicationMediator.java create mode 100644 src/main/java/mediator/Client.java create mode 100644 src/main/java/mediator/Colleague.java create mode 100644 src/main/java/mediator/ConcreteColleague.java create mode 100644 src/main/java/mediator/Mediator.java create mode 100644 src/main/java/mediator/MobileColleague.java create mode 100644 src/main/java/mediator/definition.md create mode 100644 src/main/java/mediator/mediator.jpg create mode 100644 src/main/java/nullobject/definition.md create mode 100644 src/main/java/nullobject/nullobject.jpg create mode 100644 src/main/java/strategy/definition.md create mode 100644 src/main/java/strategy/strategy.jpg diff --git a/src/main/java/mediator/ApplicationMediator.java b/src/main/java/mediator/ApplicationMediator.java new file mode 100644 index 0000000..12d14de --- /dev/null +++ b/src/main/java/mediator/ApplicationMediator.java @@ -0,0 +1,24 @@ +package mediator; + +import java.util.ArrayList; +import java.util.List; + +public class ApplicationMediator implements Mediator { + private List colleagues; + + public ApplicationMediator() { + colleagues = new ArrayList<>(); + } + + public void addColleague(Colleague colleague) { + this.colleagues.add(colleague); + } + + public void send(String message, Colleague colleague) { + for (Colleague c : colleagues) { + if (colleague != c) { + colleague.receive(message); + } + } + } +} diff --git a/src/main/java/mediator/Client.java b/src/main/java/mediator/Client.java new file mode 100644 index 0000000..e03ae04 --- /dev/null +++ b/src/main/java/mediator/Client.java @@ -0,0 +1,15 @@ +package mediator; + +public class Client { + public static void main(String[] args) { + ApplicationMediator mediator = new ApplicationMediator(); + Colleague desktop = new ConcreteColleague(mediator); + Colleague mobile = new MobileColleague(mediator); + + mediator.addColleague(desktop); + mediator.addColleague(mobile); + + desktop.send("Hello World"); + mobile.send("Hello"); + } +} diff --git a/src/main/java/mediator/Colleague.java b/src/main/java/mediator/Colleague.java new file mode 100644 index 0000000..d26e8ee --- /dev/null +++ b/src/main/java/mediator/Colleague.java @@ -0,0 +1,21 @@ +package mediator; + +public abstract class Colleague { + private Mediator mediator; + + public Colleague(Mediator mediator) { + this.mediator = mediator; + } + + //send a message via the mediator + public void send(String message) { + mediator.send(message, this); + } + + //get access to the mediator + public Mediator getMediator() { + return mediator; + } + + public abstract void receive(String message); +} diff --git a/src/main/java/mediator/ConcreteColleague.java b/src/main/java/mediator/ConcreteColleague.java new file mode 100644 index 0000000..3a8e302 --- /dev/null +++ b/src/main/java/mediator/ConcreteColleague.java @@ -0,0 +1,11 @@ +package mediator; + +public class ConcreteColleague extends Colleague { + public ConcreteColleague(Mediator mediator) { + super(mediator); + } + + public void receive(String message) { + System.out.println("Colleague Received : " + message); + } +} diff --git a/src/main/java/mediator/Mediator.java b/src/main/java/mediator/Mediator.java new file mode 100644 index 0000000..7e34fe4 --- /dev/null +++ b/src/main/java/mediator/Mediator.java @@ -0,0 +1,5 @@ +package mediator; + +public interface Mediator { + void send(String message, Colleague colleague); +} diff --git a/src/main/java/mediator/MobileColleague.java b/src/main/java/mediator/MobileColleague.java new file mode 100644 index 0000000..c2513ea --- /dev/null +++ b/src/main/java/mediator/MobileColleague.java @@ -0,0 +1,11 @@ +package mediator; + +public class MobileColleague extends Colleague { + public MobileColleague(Mediator mediator) { + super(mediator); + } + + public void receive(String message) { + System.out.println("Mobile Colleague Received : " + message); + } +} diff --git a/src/main/java/mediator/definition.md b/src/main/java/mediator/definition.md new file mode 100644 index 0000000..fb3d8a1 --- /dev/null +++ b/src/main/java/mediator/definition.md @@ -0,0 +1,6 @@ +![Mediator](./mediator.jpg) + +https://dzone.com/articles/design-patterns-mediator + +>The Mediator defines the interface for communication between Colleague objects. The ConcreteMediator implements the Mediator interface and coordinates communication between Colleague objects. It is aware of all the Colleagues and their purpose with regards to inter communication.The ConcreteColleague communicates with other colleagues through the mediator. + diff --git a/src/main/java/mediator/mediator.jpg b/src/main/java/mediator/mediator.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9659589608c68b76ce465bb5c3d25919a608fe9d GIT binary patch literal 27798 zcmeHw2|Sc*`~M?Fl0=pe%32|nt!z^XF-a6c%qht-4HYuhDMI#xqBzKw-IQ&zPFb^M z8B4}8W@O)Htb;N0f1G#yy>;HV^ZtL^|Nl9U9`k%=p1D2ueP8!=U)T5gURR7Sj1geJ zzK)&_z{CUqm%tx@K?Gd2kq&nOz`y`F4gkPzU?-CxunW8bZvix!g#LQ1!*mp2{`LJG z01)H=?ELdRSHRcp18nWr@BHa?$Lk$`xnsw`Yv#XPGeNg+Wy}F*uG%}hI=k3A-#@Hy z;v{h9f}X+7?H0k~*K5gNFZXu~hxJDSg*&Gnv%Q?9Uhrjn0JwHDL3a!=Gl>B^xR{u^ zm>6|{DEOCmG5vb{`Ze$u(+=jHyI5Fvv+ZFAZz$Oh>|kPM-m#N;*RJh9!{h^g4(#OG z#eL+|d6ol4w^+p<@SJ`Um9ks>!n=>W#+_sdh1(DP*!J-89~2Ojl#)Jr?6{(mvdWpW zs#+Jdb#yQ3>0i5UVrq87+`{IL?Oi*22S*oIw@25pETz5}z-^sY9D4)^VjbM4%9Y5)mF=&e{qO~2 z2o%c`3_P%xnF$moW-b5%Y|&Cfjsm~;%u&HxCuDCWZ|ZlkV+*gunbN)C(lP2D{l}eH z?}f$$9u${mK^vXh#q-s!f}y+Ln*ESqbJG614c1_M|$0KB&TX!xHF zg%tyM;w$SdOHEl_pqeI~CNqFgRFOKmlmXmwj4hAr_uitLC9XQ$S){egtvWT#<%f-o zFn1hH4FP`qtb~|uyx0RyFgq*M{A!GciC8>})!JdUzs|Yn{U!J_P^kP&- zOpBkuux`JgLTS$#6A3aK`lr`BLXQ6KlatZ;Hx+>fw(?M4dwox%`XLludi*?`F!KQd z7hP9M4ohA&q!}@QHx==~+Q!k;$9s`qUkT* z5E6k2iE89ak~UY&7ptx5yN{nD(bwhB`Eqys8g4uL)@943pL`|cWgwU(+b4Z+5%Z{O zpdX$W9UI@@pz^5VN}sXW+th@xc)~F5O;mXwbV);1$tMzXo7zKu2ye+(l^3SkqGb`z z@&);QH;NQ2@l&5E)&|Gf^e*M6hj-Z>mc18t&~JC1kTV{->RnDQ7Eux9R+nQ9Dkx!3 zJWjY?-ZO{Do2V+jU0BP5yA&+G*GY(N?^D$=fg5xbO>--ju0WO1r@Ca{Kw5NhawAc_KPq*B_@I4|-Xbb6yNuo`^#auNyxKou z*>r0Ms)P)B)K58UgfGW1fVz(*Y$XysKSAZRVXg3RCA$ivgDkRh`qqnU)|(!%wYVa> ztVCYp?$H5WidFIrB^AgDx+;iK+CPw_cawes`8Nm1YubE8i&u4`vNn$YLA7Q z^~}k_THY_I#}24xJ!<*d^mdfv-Mhq05jFC}Y8&+ch4rHWMR3iki0mAg*>hq!QNfsE znwvgFaV#=FWgecBPb&mY9+aKgn;~#hs$nN}BA|Mww;ox7AV@Pyr+OObS~GyB3c6%i z?L=8OLbAM~u&em-OMcmobTP#FFJ&*})}HUX%JHUBmt;1}05&gAq4q6D2BP+<%NCwb z_m=Rli4}~9ND|<8adbD@*_~J7)n*TM5f0tiYBZITY7RSn`7ulQb*B^hs&h`kgd~fF zyU)e>@g~ZT%&rp!9$F1xUzAqy9f@durTjiuP4po*V)qt zraco&e!)MH&Dm9GAf{MX^m^-y(~W(jr-!@^sLnQ{XEYC4BheTA>oGCfpQ1mvpQb`m$@ddHif5PF`T}T0A*<_9MlZGn{{h^r=$UJ%s_(be2(r z_vN!>zqYiO%|5uvBCf2Wc{qAn;+CCcu0~Z>ut3@`965M>8T>=-sRHbo^!(v2tizf2 znee9D$@68ys}`R1*sWvc`CSfGKDc=-C(V`JIxA|lfZd`IQ zcy3Ded1Lb4?S1wX)>r zhWbOYZ;Minf5-(M?moOIGrGX;+rj|$FEaq4X>74s2u+K)rAt~ax1IGgDUC_3O{F>w zPfs@=m}GaHzG*`PMA_kaQ}N*N;Lw#1qKWP&Jyfv-X=kM!L|iB#=b6z_kRLPgA)17Yi#RB8M12%o{3baou46 zA5a^v6kE__`X?smH|8jkbruJjWiw_BpzsL=w7jly+^wQlGOs!?fM~Z|2GDuL_Zi$;ZbKxBq3Hzf4%Xr;$z(n-$T-E7?|cf$%&mVCYwcAT2IT1Zxk zcrk*o`FIi%jG)<(LL)ie$9(R}#6gNu%94#^$A{+!Z|cg$TWZdD*aSC;OP=33O66R| zQLmw?LN!UpD6P@RYgZ}SFJe>iuJ?x>JEk7Rmo$~)Y`f9<2+g*i;-0327qsryJFKuv z&Sd8}K4L0k$#KeK$T5GS|7n~Y8qWY^7U`V26Hb$xdqT)9?RdkHlAy>mD%^#{CpZ|N z=eh4IZXq3a%`9GA-P1ch-m)}Vct%Hs-Tl3JIY-&yLtZF+%c^e$MHn4`pj{W)yo#;B z-Mi_q#sF-p-{ZQ>Ptcn@R-Fq6>m3h2c%XQ?@@jQ=RL>A^$`!d|(rKUpNQW<2HH=Dn zNAZJX2D+~MK9_k9jw!< zzP_iB$3ul9q^7(*kO3T2XQJHIxK5Q?oi<-SODyfaw<4^(d8xW2n#A+|X^TVFN5sQy z*(>Nnff^ACB@z1+$J`wUoX75tGJp)Js%w@potg~bYw}mzvcrn*8zXJr!#qaX0Ft%A zaQ!HD2Ws{;3^grEvRK<7bA}}^8u{+rmau9D&<&|8Sy=veoE#=b*S~9(fR@Snz-lJ- z9jVhgxwz~u#0`6G#K@Q zrW}mQZJB@l#uuteJ>RfYQpbSLYex>dos?Q88?oJfO(%bTXRc5r(E$}{L-!whW zjCKO9V-!}Fj=nQgQJfgp)-QSpPAEmy4P9s-QBEe$TZa!Qi@7U>v2B`-a_e5{0t*6C?f%mB_Y72aZXuXjkJELBwvG}@k z8^1(P&1Fn=gk1sc{GcmEh^$;}t55qP|4;YTWf;KDIkM&x;*k4Cce8S~PPD6r-FckT zGGX^ruclZ8$IVZv2rUbj2QD5DoY~heb%ZKLxqCE8=?u-Z(J45KYIhNQ10{5T7(Hg% zIlTB*ho?I=eLn8E&(JT=GcYDCC#JlzRZ7i5vCiwVG%duwS426RS_@(H6D4Pn>1)W) z%Yk0&%WsbaU5amDw=zBRsjU2YPzcHXZq2=0Y_^^oQZT$@OReWxkhk0@gpFFTvscLq zQY&50k*=L-A3cNV9lsND^n`pm_GHDeFasVlzUB!#yye~=59^->eu5`d_~MCyd#x?H(nQ2_FAtDUy@a6T)iH$`*!$kpso=vX>r^^K5%|( zHZyJIxx{Lrv7fW9-SdR|PQxq3RwqV^835*P(pu%63gz;44&MO_)?g8+8Z3w|gRoeu z6HI#Yda`sOy*=BpJw=*k;Kajm(ZaIU=5(>s;^5PmQ!iijH%pt?ZvKR1t>Z?DHGW7E zrAUXm8H(D+m9HkenYwST>*DO3X~4sO%(D+u`qonKP~mCs#r1m>RhhU`x$D?Kh)v`n zr1V8{*f0+@$_7DNU}+>l*$p0!))wB>a>+y{8M(NuCK%3{$omL)9FS}_JalKwdguxI zGF5(4#vZnl=3q;*;6b(ew>6)$v77Mbp}Y;N{_1PfB@$T@yb^Y-0wRNV zj61c(c|cXdyob!W57mV8)&e&y)Cgot6WB>S2Z^?M*4 z(4C1#eNA*^0IOFu#Tmf#t-L;L-(%l4$l{d})aFr9E(Wl2ve%xOF!^WKc^xxm!V;gVtN~Qd&i1I%!8mps0QQU$hWPFW=H}mMqorJ~2Wu9&%}% z>N}xGT>PeAh|$f08CRUO!I>&mXC68|+8v|ZlhpfQT@wLWw8O;NI=5&zuO6fJXY~(G zze9%B&XMGd8yh$B2LuXIic2Vl;bMND#o?v>zu>?0OGL2;va6jM6t|k?zc91P(LG1A z%^LX9m_D7vNs&Vb$dyP`Qdpn4ezfHblDl2(W!t&@DqnU*F-mUK%j1O85#>d-1BY@_ zM3)ysT%*%RXM6HetBnx#?uAvDs%V1%{g}k{q_xelyZEVGv)KfM_>%mMtyq*jjN2R9 z51OIG7PpV!!y*fj4^ zuaR9wQL1d;*r(2tyeot{G!ljN9ddY$)KP#tiCBf9z^v-M2 z=C+lS#1b!jO(djQ@%HN}joUr>6Q8Dr))$*Ls>~fLpZ8pHkiS7=nK`8buknzuQfB zY~{YpoW)Rr`*xxqt6$MMcdOx*OZOrFWu=9Z5z&%JT6}wh;ifeGCGJtg#U7CVnEqa5Uc8&qmMv_1r@Ma&j^PC81!|uhAXXt*Q#SI~kQn3sm z4nzPIX{rq1HMWkEc7`s`0LI!tYnBOw7XN7XH^u>`FrCb!xzo21cE}qgAL(u4lWFeg z%TB)BdkS9On?~ZevO2M;TQ^A=(96C#baVaEP7l~A1o4DbsenMjvURm_cO~-(_89{x zwyT5fLoR3+_9>2&`5)ieZ+)?F_n5)8`UJ_~$TprV554`lDPxz^J6LpU+XoCsupx42 zC72*`hPdz)k?u-wElh6M(3pSIF*5JfjY-VU|0*qH6G9qcO8m^(tiewgY+N;G0I5wN zK*<31goBeC4KJs9km;kuv8wqO{J|wvUiwj^2+h8m?=7c_C%gA|>LMpkOoWlom&ZEr zALNW+P3>TP{2h?^Ti_WK{%xD{JMeSo_mF3$g=KJ6{n7HDaQOd$(LhGdZjqCTjrF2C z9FzCo?yEF(VJRC$i40lZM0z!99>x`C&qao~nfSr&6|1hWAC9i$U8_CF9eqdgRe$6V zsELXUX)*aQdNXSsYU{F6JOCla`wF8vU?f)hArwCtNf?i$-c1gIE%Q^KfEbb}=)BU( z&{h;waGp9ZQ3Kwfn&$$wO>tPWc+vW3I$xpI;eb9#>8|z(lS@}`?C^~0t-jxlg&Rm; z@;80oO&3OzzSw)-u|87GZ87EFOrA|ORx&2wExn_@R?pmI0QP%DmoGCvjej_1$p8|; z&<6J6a8qHKDU*_U1XHr2*vw z+0((IYA%f5^KL>GHKJecO5~eq)#ltA7B}O{pxDzRP=JHC_}!8Bp{=fikI0&*wldK7 zylr12ookW=x-+`uX)yV~6O{(;&O75Tcl8fg>3MKuzVO7{MoME&2}on0kC0;*A0gg6 zfAa#}Gce&=GDp$%4cE-#apu>I#WuH14fSjA+w~`+zt!g8iuy*8E49{dLeFP#~9NPIB`R0Y%b2<8UUYF=_x(o0#6@%L-0_xQ)IeeQk=6}#9qRPnj@om|Rg`ns() z{`#0ebAm-Ko!f{3bfrfxEb=Bk$L6C^7fXC%4Ehz_AwRT-^!O;OMv{js@{xwMNuuP1 zXG(Hr^)lJTr9U^`iA)pbo);1}aN~<#JkyysFTI<@lH7{Ftm$+ORbKDoCYA4!shQ}) zTe)9L)_uN1$YI#@XGNo&W?axSv7)%({lWY;XZLZRwR&EzMi+#<*qGg5o5XveXBOr$ zR)*XRAkcy8#sJQvo{3T)&|nOpCH`A6F3T5P^{di6PQ}>ff2rFrdt!mx8Qi9V!D&o7*4g?G;c5P*62{z8-;NW5r*_^GYQBv6LL?b%?0uz ze3xw@zbK*-+Qiy#8{%M4d9C=t+t}*?!rDi@rcXz-Y17gZU@_}cWyYbQ(Oz$Gi;jJ? zo{HtF#46Y~(rW*`E{tj(_QfI6VN$^(sJ)Ky2{)-l24n>0nRFmu2h1dC^`JbWG0qj! zy88307U-&5=~9Zl_o(zIPnqOMoI}z97{3+~!i6ksxRy&OX$ZEph3`s=%DmacJ!qh` znkihFk!CRYwiVZ!T*=qzXJmudjlrwTuPy6s4d&}_KAiF5oy}}(LU?)OX}ECAIL?Pd z^heemJPd|M%7@dm-pB{6s4)P}0qxiQ)Q6-x3yooHzT;}UH$sjSyQmz=XSg?|fO|LT z`m6C5`%ic(ZDqK!UDLzORURWb&*ES9y9gpS-85dULe&Sci?@o5w-232};8{M~ za{E`dVJw3mOk>^QIa583vBUW=jG{9|rtxm6muAFN1)((3s;d9d-Jl;_a|<87?$FW5 zcGyjAsmHRZ%YYj#sr@4d?0hvvqkBz6rCUx|3ClZEzVbf2Qkry(4eDb|pFj9@=-`g) z+CLw&-OD?u(hsUq0m#=>8rwD+=)(ZAP{DA*44u23N&3l}PfY8ka;K+eU*uWu)-CjwS<4!Tnzb!%?b0?pUIePj zW+(%2iX-@}b}8MBcbLoB1P$jiy7Q%d*v9hY*+}B%Lg*s~aDWGCLA>+6OTL7)$6L}a zX9nxoITA4pnccD&H{IOJol&Vax~cd%tbp9Y6YXrJM(A&;TSNw33DT!zR0a7JV|lHq z)f^nIh_!sLY<5gppn=w0NH}6Oq3Le$uAEOnd%9E~v-T`si=WVg!U+?u41kr_DKsN& zG~I)*7y30OgeK9mR@9TsgzQ^AQbq}StjHN;=6k$zg+oP`Y!dktLV8Ue06l7(_yz$n zdQWE>y~|HdnSSf=lB8|fL$P2jAjmy)kp9_MGSs41-6(}x-Y{UEP#5nW>gp9*#WkN+ z*mJn+z{P6IXI*sB5{se!Y&LGC%AeKvmhRL%S#je{%a%TNWus|`Hr7gCje*ySD*xcm04EmbLw>fBEM^>Yy50a`cjf!YiqQ4c9_`it0|_E z1SDIA_6fV@v`*_`GXx#6aj*DoQa+}lX9I+7!P)d!v}&KNa*=Dt=T}-uR>nv_8?V^W zDC3p|=f{}!DtyxHV2ivQJFj!8XtVLgfcGusBq_)j_(#5K<;a`G{x!z-3(7BC9+t=X zD{h&=^b~WUUfO{zCRHA3B}K0gx8=DCV=oTL$0%N&?A+?nHV_?B!{O+{*fu)!PTn-e z2&3WbMe8!0c(bKcI?n*aZ}_%VpDOHK_JUCje{yC)y3}nXhZMK*x}L=3yJsad#i~^- zAzKtpF)HD*Vruq6jsZV^x3Pfsf66HGIDU%O^`K&Yc6OmUuIdFE-;&r} zjorei&|l=txep~vThTvTOO^J{R~ixx`KItrxp0!bw{D8k=OD=;a4qTKE++M^N_PJQ ze;?n&6p#|#nfg;j*yH^}LAC8qVB`R5DWOrdv>ZQPBw3oX@qEEvu6O2ouN{b0k1KM& z4?IdL3d9eKCZ;{%wQvw}!E`8^WH;$u*~oyeV2+1Z$;Kvj#nlzqHka{gh7kM_zRq9g zN}p)+To3ymHofwns2Y3z4b>>~0Yc0}*(PtuCW8PMIjalwuB9TWaM6A{dZ=_QXwV*4 z#M1S)VXsQ&?|EC>+w(gRe3>lthJewzG*HES-Hy-y(ePh~;@j=z+W{_s5LN2r0h<0+ zdbI=`yU!b%M$I+w|3KeW9J_Q8>u-dKAS#LSR9x&DsC-s<{8HHU#E<4zPU@V~ME~F8 zk#(XwvG#_Kty##}XCT@Q3-;wC(@ShA%p_5~>)bW#w}qAdZIrucS>HPcu0%^whpgO> zHoq13;{bfH+CT0PD>5xCoBfzW{A*P3kCy+;csuuPoQqluI-5e(>@==BngljAf7=lHEdvRBAHwMU zn|k?<$T2TLM;Gdo*^z0a>U`cH5VNMjjHwbo6YS%iG79hx$pf0QulPLX#`Q9E;3hcs z8*v}6t}QWuL(HPSG)+ohkgpU~^a3@2C=*#?Pe1b3->4`ieAuLhWzWcg5}cZqXYLM8 zvC5cH<>a3j02iI5!t#Oz>>2++Q@EZpHCIcU`WiY_Ead1_?LD&gRlMf_AK*1> z=YImf(QFJBjMcF^4Mx|JwYY`?irA(xGNyUwMHwfo>=@%rm$aex43k{V% z_ak_YIq1A{E*g7(cI!I&mrC6?4p?$`GH1-}&j@FLI`?d`Z)dn+%}eQsH0h<+oGG#k za!NvHl-Sv#N%(2Sc!AWPC{2eRpDuqplDlKKxZm+Mv7FSW=XkIG#Pk6$?)X!z9E_RY zMAeBNqIwbIo~#g_S<5ER;vqqAK*zU%0U+o#J#udHh3gxc z0hMUA*{-Is^(4#Lq3{7qfsc)S%YP=a{7uGL8$|X~hsZD@x*i>&%3tR!iiFjaKc}C; z&6A3HR}wT-NlbKq?dS82S>J(<|5G~nJxcU%G;EC}I`bjT z8dZ7GA>O=sQ}n}~&fe`sj;dDOW~DCcS332^+S%2e3oqV5~--~`(Gf`sb`tl!=H;?iYHiD?JRrDX6$5u%V`Tw0}{~b7KhR7KzT1=Q7$f7Qd)Q=}qU?0{@H((L+Cl)e- z>O5V8;ZDQ66pr#11-Xx04R-NI{gru|#H8F$`_F$H>G|Jpe!A0lQQwh^NI?Twq6M<0 zmM%wcU92A13dpgThS@Hyty{bIg9Pm*bxePSP-&@x|6|T`-&scB7V?Lz{2?pN3}R|vxd&wor$r0pSMzVxBbfd=%N13Z+5OD-`%hOw|IZnOq+^e^h~t} zr1iY^)&=ddTJyB;86$8I{;+GuJFg--y;*b2XGD2voVOlGN2vQein>XSyb^#PUaGe! zsjp129yxG`d?~tt;5O>!CV7LKY0ZcC|GCVif5Gqlj}(sI1HH?PBy&;CKB9P0aM&TF z!f5rYTWBO)i!2qHg>=^MyB*=9dbFV61kR*eEaKK!M)PT{1E14cBQ##C27X*}4i*)p zX}umqwp^y38vW!7+3hVsy_HGD){dW*E16U`zT@>c)Xm2i~*3ap%#&>uz~pyB80;K^cGn;#pX?@UTW7c+zW2$5b`mL0XV#UYNe)BM=6YB zzjpwBB6{uiV7V1G`VAdbAD-`9RnmlgU~q5FIT^&!j>r%`ZPtX)g2?TSoOn6-XO(H$KOtc+`hdrCT(ame`HWsvfC2xAWQr9R#Bf23A zG}kp1Yf;L?M=*W>U((JoBqkWydhwWtO~#hn4ou@5Qf%!dRVeD6pWel}-F4HnEpT{b zK!iONVK#bM&4a|~#2$Qj38N|9w_K6Ck9M!nBkeK+VAC*E%0KRed`Yy9c9Q8@`bC(A ziwMo{ZPYMLIp1fI(MG*+8YbQPVlHhSb?&;^nEVs00}QWVMd?9@q!(8tpRc0Wg{rH$ zq!0{<6>^et%h$^+ZM*vBpd__$eU%dP6E?BOxJIK*BP2}1`r7bob)rHu}dL^-B^>NQHIXU-NgB_Z` zZlZ@irCJ~u|Yg!5cinWnE|JtxthB6;aJ2)}E)u)T^e3*|uM z-YHFGvYnq&_~~iFC0ub|oOwxUw3pWnUoiM;rO&M!HLux|d4BiqD9g`$W^cUDQZV(R z`v@?kW_#mCtFiY5>Ke(AeFz!2A$)p#!l0xpHTI(Ad8J?sze>%pjO~H+w{;hyRa92$r^kNsWjzp_&^jQ8##`S#RJ`yQvtjbOQKE7?gX!30k3 zflmq!D2!owY)u2jut~C{9)H;Wm*-J0uIEnhBrY7xAAl}6_@?Pu7<)-dgO3AdEo#li z%ZxyTrhWHPb#tg%BbZrY&eZVkQVJ&Wa}-G?agU|tJK{{_TRrdI(o+5l6Nb2X=gOBo zx0Q(yWY=y%T>=bZu&G7w&^(r)LoR(a`pVVD20_su_IXqb#o5N()Z7y-fm?WFWzn`1 zain>0x6P%&^#pG9l*qHDexb>C2A0EkzV^8}$hdjo2jF|SABL$mrB^?EZbBo-RIkqa zR(HZ)(mAO86clM?KGF_F*(V>+yWtEj&wa?%1ye!a1f>`Blw5w5Yr_R8LUXu$@9=`y zC5!i`mF zF-w;1+JW<@fy2$8&RM-<|FX2Sm2{T@%r%{XRO=0t)5JLqdL2&=WnpP-+8HwrGRsR} zwiHvbymT4b#jV#$SU(6?r3$H?3*H-h(wr)Ot*BeRfF>zYJ!;;4tGKcxsjqf%NNg(Z zXbs#h`smjfZf%L^#xkK^B|;>u*ebc6z%^yDt0Bcb1IgZybcp=R&(qvgGlR|&sL&Tg z{5ax**VJqYWDbfgF2ZwY9-T9fKGQ2LS%1?3bFJU4s(RvJ>88asCwz$~zw&uVr`7FO68PH>j&L+t(mPOmC0gmo&r5YMco8MJPM!zJGVy_6Q?%bf z)%O+0bVlnn3HB_ZPulVA_i>*)PhYw4!T;8wnEV#)>!k(9tt}SKVHGY=xMcop+o;Zp zB>QCg=tQQ*P=y6Yz8k)eu%Z(}_pIik8Bro@Aguk!xDQcfJ!oGZZ@Erm(wUK1%QGuh zw>NsB&tm6Bi z_1*K{(nthC45isRuzRQ7=dw-p{d!_qcNR@@-c)Rw(>%NALZB9Yh|EXK=Yd|2eEq6B z_l+CJBlpAkeYM+a0!zP)-+Q|M=i99Fhn4o<9PqAO2KU-Eo;a_8wDRe2fwMV29%VkF zisI|tq03kkn^mU}S}{d*j%!oPkP=zfNwqzZ+F2?fJNqc&|k1>E<($(E11YXB#srMAlS`9O!aQRjT z_!~=Mr(rcOnS){`Tv~gNKWUQ1L96eo{qlIS5wD-DeFE;@m0WCr@<1#tBc&408n_yv zyw_D0z3^Ld8Tc)+A6AA@e^Z96Kb*$pwFU5)jT1gV_RxeW?tyOGY+BI+mm^6c$rKs$ zqJ%ot{0`iTmCDuP9tnQ~oZJHKlan}RQzbgeLMHE;M8f4O5=Y*tYiwThhE?`@D~x7W z>aHfB_-RlI{}U-P10q>2wT ztO;g*6m}-<^mOZeWrN@-Kxe=tixK=^eky(O`jqB+m+nLTcVP{?O;)iXFfL6wn*3IB z35W~ZV}*`TL_-!7BX>JKI%PfOd8$V-C3jl67sC(bO~0yjBKdw{;e{d#g*2JlW1p2> zA8IJay>4{4DvWvT{l?p_^rEC}%@Z4sCV!z2g2L*Hipy^cA}TR7Sa#0`5Jz6c=J+ zxF&?UaIsIxD__UQjyUY^eCt@(!jVoQg`=uM4X^l4+j-nP;gxY;+j~o85A~KP8HKZ- zIg>dx6z1)@kUk<*V* z6quWd6dPz5hN$X3D{wuAaB2)H(EKR5WP$%;#hwT;EUR9$F?lxdbZhj|VFyv4Gr9e1 z5A^Xfk_NeRa4&5iyr<>$Ptiq~I|EqzvP`FiHAIGO8a8TejF-wvsU^vW&?Ow=^9f-m zVy;(pXo}G8k_Rp79!Rj~4%n~7DtB7HB(ZZ>=Ddt)z8Ll?&xq@O+GHDKHDD`6w834O z&KEH)eBh(CI5{qW0TkIK*IM{K@yML!dlac=ebX`SK3v-9J-=-4g;tNfHsQ+pZIbGz zR|hMx4%!91&&PHSOp)v7P@cVOZt)BK`VZpz9~xGT9&E}WJgV@jn8}<8;9Wm;Ytx8! zJ8m>GP>JJ!WwIq%K7@9D6v53QV-yN4Q~=HV0twMuMWrS2^fRfkM@KicKfhTVtT?;L zv%AyoiT`TcRtiF0-~lO%E>Vj1D)46M^_9@h442Vo*6B^F2t4B*dAwC^;9M9*!d*^* zFG5S^?1#%H*QYkEf2ky_OH5n#G;m{}16BrGPpdKuXS`5frxWSMj$7_sQ)#QQA+%UZ z@|+bV`Mlw?llJ(`)v)qMugC?xeVw%*%bk?@jQtS? za;mCh1!02FEmE=JT_KX-MxG$ft&BCKc@e_}N%KpfZZD9IGsJk@?Y;+CT9zG3v3rj( z*>Oxy{vdGdV9r~bEY-$&)ZACnlB#t+w7ze*O&rYNbibSV{syt*eSQ#)Ct*83dLx)T zA6R>Qho$?ybPE|dY<@H?+B%q{bd6q4_e=`%A{P-OGDhmC53-P2=gY~@Eg#t{IK*~2 zz`+3O1N+XGEd81fo)XJu+D=V!#0zqwmKUmWpz6PO&s4nEN@;;VqOEeN+DZGF%>1Y#fRNfgx{QT%}}+ z1+{d2ue-&vDx%mkeX=>n6j~B?W!i*i|7RVZeYFQ;u{-E&H%hZsVVvGFPWZ1XrW>z9 zwF|X;IF`hRbRU#*O-R=2gdeXa9x;(++fiotBV<(vbMq6;1nKhSMd4v|HCA&1mPO;F z%H_dp>s2w2)#bhNk6Y>}2_*`Cw)_x#R~ciZR&%FLj_2;Firq%~qxN-u41h(G(=izR zCUXSFVJ#mr7U<()*Cjh9SX|m_&0odAwF$jgSEyJK5)`;*R|y29N(p{KL#9)9A?wf|1h z9FRTrk2O!g+-7-vS%_~7>R{r1eJXR^*E=kS9O5+2e}ZV86WP4sD?x4#q}irgA>s8K z1`%cHu%pm?h;eDee3zT)-km=;=LGHf#`I3bmxsTX=)gksB(o*}9t0miV zzOoW7zsB5Q?dZEUxKpaSw)64hxpgmfOaMOst@J%=_qXiygx;wYFc;p}!qZ+dBY(?{ z_8DhEl_R^<#l{N&!59r`<2f) zvr`>EGXRsGd&>z2<=qx!HciLX?7QF$Knx-UDSm$ycQ5p-)mUj}^T{)4;U9afpnTj6 zsu6|F!oh9cb@{T<1Ul4DWmBaukof}@3HxR)3tj7yQ-q&U-0TJR4q8e;c^dbySQ(z5 zGS(v7jck=xq)}4|AF2gI&B-fy%Bni4@!F}w4!xz*O+0)>yDLA5g$umkRyMhM3D^M- z`LRbz99l1*0+)r=KzD-7L(o&zpf6RIQ=#OX&4zd0`c-7RpaOL(rfYoI6LF3kdA0{y ztT5qRiH|ZroutVNpUFK*J4HnxNG%JZmQ+Kn(7KIumflSZ1Lb}O)&;2VLH94xuR+d!cjdRz@p=39RKa*n*e{)NBdCw&mBReBW!0io3&TB@gF>H* zr8@H>;)I)IFSpp=TI9Q69zjkhQ(uHf{n%h7^sdoMuoLKlR13tGgL8|a!CvQJ0%)c< z2aAZ}Dy1EYY6O)N9=Ll5NBE~AJyJGp7dBeb>0Mp&ZB?J4TpI5J4L+N{EbUUW+0^vj zU)Jf$!D>#H4_c{kW}iA`?+Kj|v@K0jDoEzJePjpJ>1Lx8dbaI3r?-}7}?4IzcJVnf;2qNo?6Aqvo@8TaizQHSamtH2BV)%u; zJK26_JvEQN!5p?^4dQLzsI~8DMs|Zr1^~`xDrRL0Gq@eW4uX80ss@8T{SdM!JyG5K zd)b-dV+?QQ&2?sK+_+x>S>4$5$U z5;v7?PDyM5d@TRWAo{+SyU2$o6KV-u5Jy8n>1QWaHqU1wnLkR2&dPH+(naMarhShM zO$bXZb`09ISotC7)|PjN7AmU0H{ifRK{Yq+cr_&t#*OwC0MR@CbJy$9EgAUgT!D*= zeTdPEc2?Podm-$NSB?*1Y7K+Ru+OUD6z)9m>6? zlnw1N2L?(?6J>&}yTk>LMGSpq!b{fh0Z~ctEr0 z%`RIWl{+zB@<8IW;okds4=b-Qi=UCavEw8>`g?=%ts2hRAZ!dXfTZg3h=q+!tQ@Bf z#jFPWYLZ&_auvLR&fQU|m1Q3}?hxl$kbv;g2%R?@a+aV})C_c59=$$xewszR$CuYz zzR%6auuhQRzs#X^y?1#jecBykVO!j%f_Fi*Wz?YsJn}#Hv|cga$9ibb65&U7D#v^I zPVscLtu3#Bp@lxfTIY%sf(1>IYGON*T`ky8RjBPi>WsWgI2Q^nF*trl=5DA&&yl zA6vQ3mIO4oG{DWOV`1L+fVWH)ZcZ_worUV_B@DToaIv^F23mqdELS`ZReEmpvN`fdLN})x|8xDjb^_4$h2X}t|Jiy!`?exb1NGt1RSe zrS%u2JMSs?NgrI-bV#^Ypb{$=bnBN>tSy=c=}p*ungUd;IpxFq_Y{`wf*Uud;vmjA zS2cDQXP@J39_0j`uH`Rw(NkRzRcJuG&hFgzd;L4WH0^Jau)pI`T|1b8xm#^uzBQve zWPdHj9cu|G8}eztR@hm+$6Js*AD&Hhsip5AH@r%pF|BDaep}QzJ2&Tyxc=#)%Kk>~ z^moj%PsROSS3Focge#-6l8>*|l=|+fq`DA~fo#pestVX3bh);G0o@7edXl7D0YuzyE|e~9OMMQjt}_YlV| zhn~5I;QFeT7<-UQd{;v3k%xv-m2uyC#oy*;!s}2Dk^NxRrFi~XBE|A%VUN1ATtnhW zB$ri9T#^RGV5LZpCGq~WRB2g{Ehg#oIZmF=%7-URdY=DmiI|s&{;~-cc1l0_eX7T= z%s^(wzmq5MPnf~Krd55*asNH#Gk#yyzu(B>+J3~}{TR&Oi!*JP5&E_o$UoFrWlJgBLH@n7p*eFKF2>jEOof6ui3pBtIKuuFe^{hxb`|CJN;cl6{R9+^K9 zV*Z*C^ItX;-!9w#@=TjQ=Kp_DZrFd%{QrhZT4y%freqRPa|WX@s=4oW(d4JtV!9|* zd=@rPo>7pniWa|4F--Wn_2vexUB1;|(*^TzLO@`d^N)PH|IF0GZ@1!awE&uP3nXzk zVEZw!tps10NeljZ6!WxdY}yEl3vb?!M@C*rB8`)LREc6CN27^JdJ>QJiNY~<$z_xU21=N|%&IcRfBLrTDq_gDM$Wgh2`lYHv;Z-y? z^}ENSPV7IUXX9k7{kiX2^V`GAXvy!TbNp6~sDFH4#DU_~un|;C2*PJRD^_F9nL&L0 zGFgt?8CqpZzg}7x-264q;K6YZbk~{MvqS@Lw@psN(PSpAJg{u}le{5hyoQ-Ir64mM zZpP*>*&9iM&MBB;yg9P0y4b&b9K(;_KNEtz2#)SQOvkS*q2CT8eJ{L(`uhsj|6qFm z{`nr`48pQu!J>ZEOys`WM0S$ylL?%+OxhRw*oQ+@ej~47x#dajVW}4}^+suznhwgE z@IvkOu=1|>{94m0!nd2Se3dQ=R=a1-K`nt`jCgX1$`%hK2rQs~ema@fYxd_#S-U6Z z3_wB^ClM^4wcj(70Vq93)tueDhU(PXuAl!@Bpa+AVEgCHkUyFQBY^)84Z@P2w>-5I zO(lHPl%$4_qS&WZo&8oq6P;v)57flPo7A_}ZJ4HH94~2Wz-EaxWM`>A-Oa8b7T(N; zPMiEE9@alPg8ywfE&m~{jhV#h2P>BTAkU11)oJok&~;c=D$1ge`h>zcr}`)xeZ$=P z{5ZA9EEaN_EmQA+w^KpIbK4tSA6csWzf1KdOups>D~NrY%Kn}7_$qn`K>l{m{yvBN zkB0wRm+g!|Nj6opL2Hr literal 0 HcmV?d00001 diff --git a/src/main/java/nullobject/definition.md b/src/main/java/nullobject/definition.md new file mode 100644 index 0000000..ef76957 --- /dev/null +++ b/src/main/java/nullobject/definition.md @@ -0,0 +1,4 @@ +![null](./nullobject.jpg) + + + diff --git a/src/main/java/nullobject/nullobject.jpg b/src/main/java/nullobject/nullobject.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85495a149b3055ba4d458f033b54b949c578a441 GIT binary patch literal 25260 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%0AO(EE8LH{j!68PH*$4v%T?=)yCKn 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

8T(_P*bCWR*4%!`bvfwt;OxKfyFm zdesPUQxl@bL+KYlxl)x_x#HWhX2ubq-^DZ7SXFFKkt|ErU4gg6j5XGMee^|#kLk5g z?3L_?9I1U~HPDa>n^CAIKoCcW)xB0bh)J|^O_g@65} zgCbo5(!^mtxHjvDDD?)HRC^mWc^L-}24P<84jM#y+vFdcnQLTe+ zI@+N=3go1CmStaMU75C&>{KUFMod^Y0~`%N_KH=}bufl4nX6nEO}=p9OdD%|g1CtL z27=yq0Cb1zj-r%D<)hghMyyX%k5YuEk+wQ)-?(=^j9tTue)xDN_^Vm=v*Tfb#{INz z+FdcMsy*n>`7`8H&>0F$*m8Digoc{5a(U|vz1mk8G~#%&u6tAf?)@EtR9HUrc%?Hx z&bJMWGf#l6<1WYxAeJdYL&2rYOgSG;B;*EEOqy~wt4s3F#f{NmCqX8YE}Y^@)cz$$ zisS%=b<8dXEI4f8?Jpgu(Jw-}-t6BT+g!NKp)WMJCK`@^8=3NwgH}BCWv>Rf^tkrf zkywJ&b!eypg}1V=Msl{JMvTDJEjvKq5Gb6?E3F+kCVihlbzmX7LV^0(=Ta{WXZ?eN zi<-oQz+~eTf=n20!aUQ<_C^JXZ)}N6Ohn=X4y14GgI1ApZp?gnCS(#~hbS&@wW6P? ze@#d%72RTUZq0&s`<<1Y`qV*I)P~ z>6L{K2&^(aam&%@Ty?vU#^N{)Y`!{Zque55m&0`iMLJhO;+JFCiZvH!N~hwQ(W)W| zdKGZpz9RI^J$CWOZ)wn4NsgBKb?HU));BoC&(Y<*GU#d^U(Nmwu?F$*3v_-LWCH5f zb;trBQc(pCA{E6@8~e^ndtWg#u)|0b-63hYS2DcFdR^jnp^u|*xShv7_Uzo4(0;Hw zZ)^2I)gJZCR%-=dFhjhrhJFXah6u2YMv0vkR|v?ISRd$G!#4ZMu9W4(!A%`l@?Fn+ zw>wB3kwwoVsf-O7K$VBKxQ3va(D$M^u9JEj)|gGdsh%E{SymReG1t*}v9Y+(&aUUf zTXBxT)MbLfSDRUpcZMQD8NvusSk1wJ$65@*vNR>xU$Vk&I^gQGTqNc6pln#ixSNnl zR~0*Q(`VdN*Z+)rBRvju)@?9>MxQ6fkmZ&n@$jzkSB@7-qg)728%J{mJqN@-3Ja{Ffqj_H`h{_!)B43h!k+j#Ah2DEer$;xyXS ztY@;5ccw#O#qcIXSk-nR0mfA@%B@tFV4KzpderNdbIQuX9ms`TyiP#l- zQhS3^NIN!sN@~byO9j@n{%!EYGqI>46E=OH`*yd(kMFPwT{#C;VRq`lhmOb4k59=R zy!3?u)omse`QlN}X_iSxo3n+N(ifxeyXHMnclc$PRefbwx6Pnq(Lr*0%m^=?LFi>i zCU4K)NFHr1GZpdycCgR*SE>y|$5feuxg*$mcf+l016Rx60t4+p&E$Iz&yv z#i$Ep9sDoS1vQ#=+#|}0w)Vb})ypU1$mPlLl6US!29)sUVr56({6qIhQ#^wOU zt==`9{4G%gEin>Xa`+vs45#Ef4=~!)+rM}AW3Hx zOxl|S^0cJW=yH!2*T(qum_`OWd6?t*w%-BMJ|w6baW$;S&busn_LQfU!T?EGKG)n7 z*L$DlLuSlmw?{sTF*4+=Gvc!3@^lES*aVD1LwHxR!<(Sn55|qz_56vxZW%qEkz4-=cp8Aa0TQ#aw`~nKazRpxb6-^VTifWi-kZ5| z$BEp5514W3q!zR#g=~A3_BoSPWP(uV2+&a8lnkqyszu~m3zi4R#19`$W}{5L9!i$ibhi!xceOu4!8qS-J7{^<~sMKtf0K zwdWpabh(#vXJDb$$BFadZ%M4>>C*t>I(EfQq zrWK^VVnk{+PRUg{cH3SXl)_g(MxQAN_d7aGzNEUK($MXNU<1psFvuiIqhkG@Snd=9 zaSQ8TBX5s?UtsNcsPD}FgKRhP>Lhn@S)De*xo7RyZlObW6z0JLJj`7J-Em?E2qBXk zAiKreI-x#Kge9XwZ7uYCF0$lqk4UZ(3E4y4$**PZvZ8Ejl$>( z2Zp^c#7wf-cZjmq7cG#Fh7sM%wtIt~9)yoQA)*JtTi!;g`R@?k3<~cCn6Y~c8cTnR zUW&Zc{BMm7KyOjM39-@Qdy@+6rr8<=+Z;s`bwLDSTP}3PllUa~m}m1=zblk7P_zT` z;{?{vhmv!^ZCe zu{W?O5%h}b%2vh-X9xG$H(+}bDd508iC%nd-_tDu5o0#X!~Fo5WfrM)$cZi*)+kx8%wuoCGXx~?XO1~tW%=*sgC-T4lQx`B2? z2V9{&RXFpQ((*%fuwZWdZ?u4V-x9^AVq^i|q4`yH@cUL|7&XK(4gHyG1N@H3(|>M> z-@Asmq5q^V@IR^Ft*PG|{$Y&#u>Xmzi{$~f_SFC;f>v`USqyJi8dl1ezal?tR+671 zGR`u`UTKSL%3+9nqLRM||6LoiV6@7j4651$KM_Ebf%sY|(oJ$~iCevId6Q40xY#PE zme%=q+yjjwY*F+(#AEamhQ5xCtTJ3DXz%?zJyW!t<5g1Zr#O~RE~4{P4cND<@F5+_ zH|%ME53HN4*VwZ}f4lO6N*vtX!SGF*XbPnZyuIrGAwGQc0Trll^`J(PJQquD&?kTr z0`7w3Qrh1kYs=u(4k#!J4`^@M;rshC;C+yFK3KSH^1uC4Ec1=}!N*4o<+Rt2e1~+I z`M{^KzrgP<+%4}14~udBI|*88%xc&g8T9Oc>ki+pNfYLSI5~jh_h5;sWf9iw{YFt} ztOt5PbbS1Wa0!g!z;H>K1FzWF8@z*IRu=bql%cuaonc!2KF-=K{j&Zv_R^0nL2Re^ z#eRoOkAZiD)kH6f4m_ZKnLZo*?}1qDG$RBkbTH2}}$8uzt<3y+c~xA?W+yalbTd_rK*sMd}1-BPO_PiiX6}qIB9()Z1z{ zcS8)HctYr4Z;!pA9?WU2>(_u$>+M(52kb*s8{*5)(@`Qe`3+p}qRAd6V_T%8Wl-M7 z6OsLleH2`j0Fx+W(LkV3DExOzqHIocpu=-HUxR zXkx803+RA&_LA8g;N)m6vWz}8x>o=U-f7IEze7Yu&9Z@|rgGAf(ZO3Dp+50srm+Y2 zZt4qjX`$xG&rI2`UmT^y`u4$?OZ4che59pa2;oodc+YR{XT=|!Y7z-T-hA1k!>VfB zMkRj8PY#XuM)FaR;OTID2)!#94OpkrfrquyJcXeYM$sz#MOA`)G5Th4-?R}7r$}sk z#FAF_x_54(IMYzsMyfwU_RMMg<=D<+$1=V{n3C`rmJ?>}ImP-kkF>d$O)lATfi!cp z)h{nwa;_e?6?zo;NR1QzuY1g?5hu0d=fi8Lv&fgZ*-cFsbD;?=-6c&k-O4tXj=D2+ zecIP2e_#dwQ59BWBM>Z3o3Hd-oULVw5udiVyZAYD+(r9sKV5Q(E!oe&c@=#sVqFFc zJAW1TnfEkQqv3mkpN)-d2mpnrzC-H#3S)OA+-R4nIv1Ae9)Ep2&U6IH%z z(Kni6MRpjx1C+i2=x|efDdMK3mA8iCy;ip*pWH(fzY~%kc&E34_PGqcfR)CA{YjP? z6z=S2_4CgwL8nm)+}N>;1=E~2QLX`ajnWq~52^%4a-aHIytED0KBPuJ+4q?Z54DDdp8H zHppfKrQ$9}m{uRz?CQ$0cedr$bEk=s(BcDl#Zi8aQFwtZ7*dEUi)&*d?diE^x^W)jKT%Bazocc?I^q$)c? z-o9iK-o^Lkez?wL=2C}+qnB@mDAXLX@KXmrD{WE0HIhIBX)1fB*5J69RQk|qF^$GJ zMkdkF=ISfo;xy?-t#^CTU)m4)cMn5IPwSui(m9%`g;;)pk{e24`g=Rr*XX<7;$}7d zk?UM)pA-*e(}v9nUfP!5ab9*mh;x16)3&mLV4`#cP{hKv&TS~W`8A$r&*&DoCW1=!)T;=&XUP~@6 z;p58(c2LHOl%9$kvKB&A@!^oKp!fMNH+R8`*DM&KSaGo^%=c7P=;<0*DYAXrxvYKv z{=~J|65&y5nnRVhA5tBYAAyErSYKJaYCe_MwwLnWz}@BD)wXF5Nw>O34BIWd;>NTe z175RUI!XoN8h_eVo9L!Zq9U0z3MXoSVa~eB1IOtSSknP_Gw)j1-Rjf@J98)8>%^wE zug9|e#U4yDBp+oLVT(Si6Q#rVlGQOA5dnvest%MlxfVKW5vH3}q(_?8*UZb$I>fw+Fk*gad9I;i@|0=pn21&Lql#OW z>l!YAS6dw`>7KP$h&RBb=c2=FXy9*B?eAHKr_}@KHIXYa+L0C!6C!K4h97&y;8r2}C zVw@jI=ZmbEBx}a^8tQ)(2|P(#yt6~SV|NIQ`hGeI{>Fr*5MVfZd~iUzeo;ha(E#Hz z9(nvjg&FCocoM(AVwh>m6X6Dl&rNY|%BETh!1%R_0cUw8nN2g?qWZZ{ zq9-_`vKS(G6U89c$SwD7(6#>uJs0PbO#tU~bzAqGr6UY$E0i&6^`lA0%4T-E=Q5Tf zFk8{3K8y8XzNg8`#5qTSuUMCI4xCROOKi>i&ZX>)`t)bZyc9zM(tT$vAv#oV|>d5;$QzNhg znjbDp^iM9!-}4H<{|ly{|CcUHrz#U}+?sr1z**+FPTDWhhT3yf2`_q2T%z}9@m~ID zEq-appBCk8OOgZ~w|Z7Hz`}s2z6if(pI}>77wr_jUL6n&dCudmCRpo8L^M#24WbOB zqC=dvsEcZc;>??AZd_D%XK&kHoTqlAT~+HOJAM)&_O?XSvpSj!losVHggD5Jm2^3~ zAm0vMDH}EDI<0f&VJ}aZs=6e%RHKa~ABDHR6|;F=22E7ph2!&oz&fuG!0SBfJ84j- zeh-z$^8|P(`Ke&aw#Z>`GK!5PV@0ZO zK6q;WZp3;?v!(`PRaHOqVoap_?d13~dt1JjWykK{;1_bM=y~`#{$KRVAXUeY97ahI z2UnD=bK-zQZF-V7O5fL7=!QimlCHQoi<&eC+PyCg=hCvdz@wrVLgvf|F1GZc)WB40 z@Rnq{clrBiGZ2~d$U*hq*JRyAbNI_ zBK@2Pqyc#Qb<4Tau6(NHFxSjX5ktq~xn6HbH9c9>9Nnx#Ibrwsj2VErMhdRnmOT2) zHIq}h(={w$6%8cBCOUy$HlxfDdp9yEM*Sei@2tGITgHO@j8GUf_GC#-$Vya8yoghvdN)QRBjDbFZZ-jm!N(cbz_)Y2 z{M0`eLXN5*fHw;&5TT*cC@U}gn5Wq2o2t9E_Ht4uFrqu<+`1gD9)?*ihl)=L9o=lz z0(06eU{$79bK%pQg9B|FP3DtdRt_SWPiPlt3ILI< zR3^H8S!EG6rmHpVQK)oY-r^BW1N*n3Q#RMnO@sG~6-$4z zd&o^uHs&1AM~^{C4|*IRW~Kv64h(UU)%G4z$~w#)0z6L`hp%5MvLy2nU4xYAa~Bi@ z1+A`F>xjk`y=HG)2~0YHXMUJ3Y!VcD@AizpUnIXtf*A?{1b~;Td*Xre2&%3p3JG_d z9}J97w;13UhMAcC+_ZD*|7;dm!&&$UL2a*`J#%pmyw5Rjkl`P9u7@AYIGZgKq7o5u z8K+%tz53G0{E_vc_ZH4I80GpF79l7?Ja}PT)f*-wT+^@Ds9u{faJq2xQ=8hj-1Q1^ ze%tiUb&!m~;l~|K|M^;w&F`}vxS6peTkvJiX);T&-`P@3(DV^yt2~F|@z0LJt~HDV z6_!=cm21}!hC{{^mvdc;Nb1Kvx0Kwuw0efC+8N#CduoWRmj*0+Q(82~EjYiKFt^|7 zvh|_KJsG2YsDoWQb4~#!l=u3`^)r8-A((*vr%i->BTL~yEJRVhVyGO9d2-5hvC2CG zH|cPs^Qpa3ulu=UnF&P0yKXuX-Np6-XRYtveT&5C0~RwZkDBVNQwo>*b@BNxh27to zBRWsld1x`!t|*km5@myc`A}soQa{S#v=I=E7abkAoW+(^6LAqLcKvLnzUKwOVI`DL zoQmP7xqjdv(>RZBucHhOf6xL_Xg?2&anpvxHWK_);O2k@K?XYMpw#QXIh^XlVE17m zhLP)>TjE(AW+L6)AStEK8_qF03QL&sWUm?#NJ)09YS5mE*NC2$*LS8480wa zwz0MRP>{8q)K0Y#;4hK%r@i^dU8}}b3Jp5~?M;gWB%#Lt ztEmt|e(3$Ws_{ilBt6aO2c%c?&Q9IMA!XYqS*6L7z~kQQp%YFU!-Qmf>ba6K`cK(K z;8R5;*uPqNC0A(h$n+JM) zf3Sy;$5XsN9zR~H5Aqcr68gNSA2LTA$#%iOR+*j{1?fY|7-85AWB_*P+pd0S@ML6hGV}PKb9=)%MV_b%8^3=FxF*2guv&!;ldQo zVT1p*KN_cE(!V8}o%qNZt?FO8@GG-Fv&DA^)LtomH!0?H)S@Oj%N7Lma^rh Date: Tue, 6 Oct 2020 21:49:34 +0900 Subject: [PATCH 5/9] Composite & Observer Pattern --- src/main/java/composite/Body.java | 21 ++++++++++++ src/main/java/composite/Client.java | 19 +++++++++++ .../java/composite/CompositeComputer.java | 30 ++++++++++++++++++ src/main/java/composite/Computer.java | 6 ++++ src/main/java/composite/Keyboard.java | 21 ++++++++++++ src/main/java/composite/Monitor.java | 21 ++++++++++++ src/main/java/composite/Speaker.java | 21 ++++++++++++ src/main/java/composite/composite.png | Bin 0 -> 11772 bytes src/main/java/composite/definition.md | 18 +++++++++++ .../java/observer/after/ClockObserver.java | 5 +++ .../java/observer/after/MockTimeSource.java | 7 ++++ src/main/java/observer/after/TimeSource.java | 20 ++++++++++++ .../java/observer/before/ClockDriver.java | 14 ++++++++ .../java/observer/before/MockTimeSink.java | 26 +++++++++++++++ .../java/observer/before/MockTimeSource.java | 13 ++++++++ src/main/java/observer/before/TimeSink.java | 5 +++ src/main/java/observer/before/TimeSource.java | 5 +++ .../java/observer/finish/MockTimeSink.java | 30 ++++++++++++++++++ .../java/observer/finish/MockTimeSource.java | 29 +++++++++++++++++ src/main/java/observer/finish/Observer.java | 5 +++ src/main/java/observer/finish/Subject.java | 20 ++++++++++++ src/main/java/observer/finish/TimeSource.java | 7 ++++ .../java/observer/process/ClockObserver.java | 5 +++ .../java/observer/process/MockTimeSink.java | 26 +++++++++++++++ .../java/observer/process/MockTimeSource.java | 13 ++++++++ .../java/observer/process/TimeSource.java | 5 +++ 26 files changed, 392 insertions(+) create mode 100644 src/main/java/composite/Body.java create mode 100644 src/main/java/composite/Client.java create mode 100644 src/main/java/composite/CompositeComputer.java create mode 100644 src/main/java/composite/Computer.java create mode 100644 src/main/java/composite/Keyboard.java create mode 100644 src/main/java/composite/Monitor.java create mode 100644 src/main/java/composite/Speaker.java create mode 100644 src/main/java/composite/composite.png create mode 100644 src/main/java/composite/definition.md create mode 100644 src/main/java/observer/after/ClockObserver.java create mode 100644 src/main/java/observer/after/MockTimeSource.java create mode 100644 src/main/java/observer/after/TimeSource.java create mode 100644 src/main/java/observer/before/ClockDriver.java create mode 100644 src/main/java/observer/before/MockTimeSink.java create mode 100644 src/main/java/observer/before/MockTimeSource.java create mode 100644 src/main/java/observer/before/TimeSink.java create mode 100644 src/main/java/observer/before/TimeSource.java create mode 100644 src/main/java/observer/finish/MockTimeSink.java create mode 100644 src/main/java/observer/finish/MockTimeSource.java create mode 100644 src/main/java/observer/finish/Observer.java create mode 100644 src/main/java/observer/finish/Subject.java create mode 100644 src/main/java/observer/finish/TimeSource.java create mode 100644 src/main/java/observer/process/ClockObserver.java create mode 100644 src/main/java/observer/process/MockTimeSink.java create mode 100644 src/main/java/observer/process/MockTimeSource.java create mode 100644 src/main/java/observer/process/TimeSource.java diff --git a/src/main/java/composite/Body.java b/src/main/java/composite/Body.java new file mode 100644 index 0000000..4cdb887 --- /dev/null +++ b/src/main/java/composite/Body.java @@ -0,0 +1,21 @@ +package composite; + +public class Body implements Computer { + private int price; + private int power; + + public Body(int price, int power) { + this.price = price; + this.power = power; + } + + @Override + public int getPrice() { + return price; + } + + @Override + public int getPower() { + return power; + } +} diff --git a/src/main/java/composite/Client.java b/src/main/java/composite/Client.java new file mode 100644 index 0000000..9975df2 --- /dev/null +++ b/src/main/java/composite/Client.java @@ -0,0 +1,19 @@ +package composite; + +import com.sun.org.apache.bcel.internal.generic.MONITORENTER; + +public class Client { + public static void main(String[] args) { + Keyboard keyboard = new Keyboard(5, 2); + Monitor monitor = new Monitor(10, 20); + Speaker speaker = new Speaker(30, 20); + + CompositeComputer compositeComputer = new CompositeComputer(); + compositeComputer.addComponent(keyboard); + compositeComputer.addComponent(monitor); + compositeComputer.addComponent(speaker); + + System.out.printf("Computer Price : %d\n", compositeComputer.getPrice()); + System.out.printf("Computer Power : %d\n", compositeComputer.getPower()); + } +} diff --git a/src/main/java/composite/CompositeComputer.java b/src/main/java/composite/CompositeComputer.java new file mode 100644 index 0000000..5f42999 --- /dev/null +++ b/src/main/java/composite/CompositeComputer.java @@ -0,0 +1,30 @@ +package composite; + +import java.util.ArrayList; +import java.util.List; + +public class CompositeComputer implements Computer{ + private List components = new ArrayList<>(); + + public void addComponent(Computer computer) { + this.components.add(computer); + } + + @Override + public int getPrice() { + int price = 0; + for (Computer computer : components) { + price += computer.getPrice(); + } + return price; + } + + @Override + public int getPower() { + int power = 0; + for (Computer computer : components) { + power += computer.getPower(); + } + return power; + } +} diff --git a/src/main/java/composite/Computer.java b/src/main/java/composite/Computer.java new file mode 100644 index 0000000..f4b5938 --- /dev/null +++ b/src/main/java/composite/Computer.java @@ -0,0 +1,6 @@ +package composite; + +public interface Computer { + int getPrice(); + int getPower(); +} diff --git a/src/main/java/composite/Keyboard.java b/src/main/java/composite/Keyboard.java new file mode 100644 index 0000000..9383ec8 --- /dev/null +++ b/src/main/java/composite/Keyboard.java @@ -0,0 +1,21 @@ +package composite; + +public class Keyboard implements Computer { + private int price; + private int power; + + public Keyboard(int price, int power) { + this.price = price; + this.power = power; + } + + @Override + public int getPrice() { + return price; + } + + @Override + public int getPower() { + return power; + } +} diff --git a/src/main/java/composite/Monitor.java b/src/main/java/composite/Monitor.java new file mode 100644 index 0000000..9e092ed --- /dev/null +++ b/src/main/java/composite/Monitor.java @@ -0,0 +1,21 @@ +package composite; + +public class Monitor implements Computer { + private int price; + private int power; + + public Monitor(int price, int power) { + this.price = price; + this.power = power; + } + + @Override + public int getPrice() { + return price; + } + + @Override + public int getPower() { + return power; + } +} diff --git a/src/main/java/composite/Speaker.java b/src/main/java/composite/Speaker.java new file mode 100644 index 0000000..a29a54d --- /dev/null +++ b/src/main/java/composite/Speaker.java @@ -0,0 +1,21 @@ +package composite; + +public class Speaker implements Computer { + private int price; + private int power; + + public Speaker(int price, int power) { + this.price = price; + this.power = power; + } + + @Override + public int getPrice() { + return price; + } + + @Override + public int getPower() { + return power; + } +} diff --git a/src/main/java/composite/composite.png b/src/main/java/composite/composite.png new file mode 100644 index 0000000000000000000000000000000000000000..67d465704fe70a6d8c0b99e7567c3ea3f7299b96 GIT binary patch literal 11772 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 literal 0 HcmV?d00001 diff --git a/src/main/java/composite/definition.md b/src/main/java/composite/definition.md new file mode 100644 index 0000000..01a7c75 --- /dev/null +++ b/src/main/java/composite/definition.md @@ -0,0 +1,18 @@ +# Composite Pattern +여러 개의 객체들로 구성된 복합 객체와 단일 객체를 클라이언트에서 구별없이 다루게 해주는 패턴 +- 전체-부분의 관계 (이를테면 디렉토리-파일)를 갖는 객체들 사이의 관계를 정의할 때 유용하다. + +![Composite](./composite.png) + +## 구성요소 +- Component : 구체적인 부분, 즉 Leaf 클래스와 전체에 해당하는 Compoite 클래스에 공통 인터페이스를 정의 +- Leaf : 구체적인 부분 클래스, Compoite 객체의 부품으로 설정 +- Composite : 전체 클래스, 복수개의 컴포넌트를 갖도록 정의하며 복수개의 Leaf, 복수개의 Compoite 객체를 부분으로 가질 수 있음. + + +## 특징 +이 패턴을 사용하면 부분 객체의 추가나 삭제 등이 있어도 전체 객체의 클래스 코드를 변경하지 않아도 된다. +일대다 관계의 행위를 이해하기 쉽게 설계할 수 있음. + +## 데코레이터 패턴과의 차이점 +https://stackoverflow.com/questions/2233952/difference-between-the-composite-pattern-and-decorator-pattern diff --git a/src/main/java/observer/after/ClockObserver.java b/src/main/java/observer/after/ClockObserver.java new file mode 100644 index 0000000..e9b5921 --- /dev/null +++ b/src/main/java/observer/after/ClockObserver.java @@ -0,0 +1,5 @@ +package observer.after; + +public interface ClockObserver { + void update(int hours, int minutes, int seconds); +} diff --git a/src/main/java/observer/after/MockTimeSource.java b/src/main/java/observer/after/MockTimeSource.java new file mode 100644 index 0000000..33db93e --- /dev/null +++ b/src/main/java/observer/after/MockTimeSource.java @@ -0,0 +1,7 @@ +package observer.after; + +public class MockTimeSource extends TimeSource { + public void setTime(int hours, int minutes, int seconds) { + notify(hours, minutes, seconds); + } +} diff --git a/src/main/java/observer/after/TimeSource.java b/src/main/java/observer/after/TimeSource.java new file mode 100644 index 0000000..557bb11 --- /dev/null +++ b/src/main/java/observer/after/TimeSource.java @@ -0,0 +1,20 @@ +package observer.after; + +import java.util.Iterator; +import java.util.Vector; + +public class TimeSource { + private Vector itsObservers = new Vector(); + + protected void notify(int hours, int minutes, int seconds) { + Iterator i = itsObservers.iterator(); + while (i.hasNext()) { + ClockObserver observer = (ClockObserver) i.next(); + observer.update(hours, minutes, seconds); + } + } + + public void registerObserver(ClockObserver observer) { + itsObservers.add(observer); + } +} diff --git a/src/main/java/observer/before/ClockDriver.java b/src/main/java/observer/before/ClockDriver.java new file mode 100644 index 0000000..f3e572d --- /dev/null +++ b/src/main/java/observer/before/ClockDriver.java @@ -0,0 +1,14 @@ +package observer.before; + +public class ClockDriver { + private TimeSink itsSink; + + public ClockDriver(TimeSource source, TimeSink sink) { + source.setDriver(this); + itsSink = sink; + } + + public void update(int hours, int minutes, int seconds) { + itsSink.setTime(hours, minutes, seconds); + } +} diff --git a/src/main/java/observer/before/MockTimeSink.java b/src/main/java/observer/before/MockTimeSink.java new file mode 100644 index 0000000..7c84062 --- /dev/null +++ b/src/main/java/observer/before/MockTimeSink.java @@ -0,0 +1,26 @@ +package observer.before; + +public class MockTimeSink implements TimeSink { + private int itsHours; + private int itsMinutes; + private int itsSeconds; + + public int getItsHours() { + return itsHours; + } + + public int getItsMinutes() { + return itsMinutes; + } + + public int getItsSeconds() { + return itsSeconds; + } + + public void setTime(int hours, int minutes, int seconds) { + this.itsHours = hours; + this.itsMinutes = minutes; + this.itsSeconds = seconds; + } + +} diff --git a/src/main/java/observer/before/MockTimeSource.java b/src/main/java/observer/before/MockTimeSource.java new file mode 100644 index 0000000..6ba9ef6 --- /dev/null +++ b/src/main/java/observer/before/MockTimeSource.java @@ -0,0 +1,13 @@ +package observer.before; + +public class MockTimeSource implements TimeSource { + private ClockDriver itsDriver; + + public void setTime(int hours, int minutes, int seconds) { + itsDriver.update(hours, minutes, seconds); + } + + public void setDriver(ClockDriver driver) { + itsDriver = driver; + } +} diff --git a/src/main/java/observer/before/TimeSink.java b/src/main/java/observer/before/TimeSink.java new file mode 100644 index 0000000..aa24979 --- /dev/null +++ b/src/main/java/observer/before/TimeSink.java @@ -0,0 +1,5 @@ +package observer.before; + +public interface TimeSink { + public void setTime(int hours, int minutes, int seconds); +} diff --git a/src/main/java/observer/before/TimeSource.java b/src/main/java/observer/before/TimeSource.java new file mode 100644 index 0000000..52036d7 --- /dev/null +++ b/src/main/java/observer/before/TimeSource.java @@ -0,0 +1,5 @@ +package observer.before; + +public interface TimeSource { + public void setDriver(ClockDriver driver); +} \ No newline at end of file diff --git a/src/main/java/observer/finish/MockTimeSink.java b/src/main/java/observer/finish/MockTimeSink.java new file mode 100644 index 0000000..b1cd26b --- /dev/null +++ b/src/main/java/observer/finish/MockTimeSink.java @@ -0,0 +1,30 @@ +package observer.finish; + +public class MockTimeSink implements Observer { + private int hours; + private int minutes; + private int seconds; + private TimeSource source; + + public MockTimeSink(TimeSource source) { + this.source = source; + } + + public int getHours() { + return hours; + } + + public int getMinutes() { + return minutes; + } + + public int getSeconds() { + return seconds; + } + + public void update() { + this.hours = source.getHours(); + this.minutes = source.getMinutes(); + this.seconds = source.getSeconds(); + } +} diff --git a/src/main/java/observer/finish/MockTimeSource.java b/src/main/java/observer/finish/MockTimeSource.java new file mode 100644 index 0000000..944136a --- /dev/null +++ b/src/main/java/observer/finish/MockTimeSource.java @@ -0,0 +1,29 @@ +package observer.finish; + +public class MockTimeSource extends Subject implements TimeSource { + private int hours; + private int minutes; + private int seconds; + + public void setTime(int hours, int minutes, int seconds) { + this.hours = hours; + this.minutes = minutes; + this.seconds = seconds; + notifyObserver(); + } + + @Override + public int getHours() { + return hours; + } + + @Override + public int getMinutes() { + return minutes; + } + + @Override + public int getSeconds() { + return seconds; + } +} diff --git a/src/main/java/observer/finish/Observer.java b/src/main/java/observer/finish/Observer.java new file mode 100644 index 0000000..3e71b30 --- /dev/null +++ b/src/main/java/observer/finish/Observer.java @@ -0,0 +1,5 @@ +package observer.finish; + +public interface Observer { + public void update(); +} diff --git a/src/main/java/observer/finish/Subject.java b/src/main/java/observer/finish/Subject.java new file mode 100644 index 0000000..270cac6 --- /dev/null +++ b/src/main/java/observer/finish/Subject.java @@ -0,0 +1,20 @@ +package observer.finish; + +import java.util.Iterator; +import java.util.Vector; + +public class Subject { + private Vector itsObservers = new Vector(); + + protected void notifyObserver() { + Iterator i = itsObservers.iterator(); + while (i.hasNext()) { + Observer observer = (Observer) i.next(); + observer.update(); + } + } + + public void registerObserver(Observer observer) { + itsObservers.add(observer); + } +} diff --git a/src/main/java/observer/finish/TimeSource.java b/src/main/java/observer/finish/TimeSource.java new file mode 100644 index 0000000..544e085 --- /dev/null +++ b/src/main/java/observer/finish/TimeSource.java @@ -0,0 +1,7 @@ +package observer.finish; + +public interface TimeSource { + int getHours(); + int getMinutes(); + int getSeconds(); +} diff --git a/src/main/java/observer/process/ClockObserver.java b/src/main/java/observer/process/ClockObserver.java new file mode 100644 index 0000000..6fb8e2f --- /dev/null +++ b/src/main/java/observer/process/ClockObserver.java @@ -0,0 +1,5 @@ +package observer.process; + +public interface ClockObserver { + void update(int hours, int minutes, int seconds); +} diff --git a/src/main/java/observer/process/MockTimeSink.java b/src/main/java/observer/process/MockTimeSink.java new file mode 100644 index 0000000..177de48 --- /dev/null +++ b/src/main/java/observer/process/MockTimeSink.java @@ -0,0 +1,26 @@ +package observer.process; + +public class MockTimeSink implements ClockObserver { + private int itsHours; + private int itsMinutes; + private int itsSeconds; + + public int getItsHours() { + return itsHours; + } + + public int getItsMinutes() { + return itsMinutes; + } + + public int getItsSeconds() { + return itsSeconds; + } + + @Override + public void update(int hours, int minutes, int seconds) { + this.itsHours = hours; + this.itsMinutes = minutes; + this.itsSeconds = seconds; + } +} diff --git a/src/main/java/observer/process/MockTimeSource.java b/src/main/java/observer/process/MockTimeSource.java new file mode 100644 index 0000000..08c1c24 --- /dev/null +++ b/src/main/java/observer/process/MockTimeSource.java @@ -0,0 +1,13 @@ +package observer.process; + +public class MockTimeSource implements TimeSource { + private ClockObserver itsObserver; + + public void setTime(int hours, int minutes, int seconds) { + itsObserver.update(hours, minutes, seconds); + } + + public void setObserver(ClockObserver observer) { + itsObserver = observer; + } +} diff --git a/src/main/java/observer/process/TimeSource.java b/src/main/java/observer/process/TimeSource.java new file mode 100644 index 0000000..5c60631 --- /dev/null +++ b/src/main/java/observer/process/TimeSource.java @@ -0,0 +1,5 @@ +package observer.process; + +public interface TimeSource { + void setObserver(ClockObserver observer); +} \ No newline at end of file From 58584df3cc599ef4bf8f5c2b0304d49a6b922003 Mon Sep 17 00:00:00 2001 From: "anny.k" Date: Wed, 7 Oct 2020 22:08:31 +0900 Subject: [PATCH 6/9] =?UTF-8?q?Observer=20Pattern=20=EB=B3=B4=EA=B0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/composite/Client.java | 2 -- src/main/java/composite/definition.md | 2 +- src/main/java/observer/Client.java | 17 ++++++++++ src/main/java/observer/ConcreteObserverA.java | 7 ++++ src/main/java/observer/ConcreteObserverB.java | 7 ++++ src/main/java/observer/ConcreteSubject.java | 23 +++++++++++++ src/main/java/observer/Observer.java | 5 +++ src/main/java/observer/Subject.java | 7 ++++ src/main/java/observer/definition.md | 4 +++ src/main/java/observer/finish/Client.java | 24 ++++++++++++++ src/main/java/observer/finish/Main.java | 9 ++++++ .../java/observer/finish/MockTimeSink.java | 14 ++++---- .../java/observer/finish/MockTimeSink2.java | 32 +++++++++++++++++++ .../java/observer/finish/MockTimeSource.java | 2 +- src/main/java/observer/finish/Observer.java | 2 +- src/main/java/observer/finish/Subject.java | 4 +-- 16 files changed, 148 insertions(+), 13 deletions(-) create mode 100644 src/main/java/observer/Client.java create mode 100644 src/main/java/observer/ConcreteObserverA.java create mode 100644 src/main/java/observer/ConcreteObserverB.java create mode 100644 src/main/java/observer/ConcreteSubject.java create mode 100644 src/main/java/observer/Observer.java create mode 100644 src/main/java/observer/Subject.java create mode 100644 src/main/java/observer/definition.md create mode 100644 src/main/java/observer/finish/Client.java create mode 100644 src/main/java/observer/finish/Main.java create mode 100644 src/main/java/observer/finish/MockTimeSink2.java diff --git a/src/main/java/composite/Client.java b/src/main/java/composite/Client.java index 9975df2..67f05b2 100644 --- a/src/main/java/composite/Client.java +++ b/src/main/java/composite/Client.java @@ -1,7 +1,5 @@ package composite; -import com.sun.org.apache.bcel.internal.generic.MONITORENTER; - public class Client { public static void main(String[] args) { Keyboard keyboard = new Keyboard(5, 2); diff --git a/src/main/java/composite/definition.md b/src/main/java/composite/definition.md index 01a7c75..30518d3 100644 --- a/src/main/java/composite/definition.md +++ b/src/main/java/composite/definition.md @@ -6,7 +6,7 @@ ## 구성요소 - Component : 구체적인 부분, 즉 Leaf 클래스와 전체에 해당하는 Compoite 클래스에 공통 인터페이스를 정의 -- Leaf : 구체적인 부분 클래스, Compoite 객체의 부품으로 설정 +- Leaf : 구체적인 부분 클래스, Composite 객체의 부품으로 설정 - Composite : 전체 클래스, 복수개의 컴포넌트를 갖도록 정의하며 복수개의 Leaf, 복수개의 Compoite 객체를 부분으로 가질 수 있음. diff --git a/src/main/java/observer/Client.java b/src/main/java/observer/Client.java new file mode 100644 index 0000000..11d2da4 --- /dev/null +++ b/src/main/java/observer/Client.java @@ -0,0 +1,17 @@ +package observer; + +public class Client { + public static void main(String[] args) { + Subject subject = new ConcreteSubject(); + Observer observerA = new ConcreteObserverA(); + Observer observerB = new ConcreteObserverB(); + + subject.notifyObservers("No Listeners"); + + subject.registerObserver(observerA); + subject.notifyObservers("Message for A"); + + subject.registerObserver(observerB); + subject.notifyObservers("Message for A & B"); + } +} diff --git a/src/main/java/observer/ConcreteObserverA.java b/src/main/java/observer/ConcreteObserverA.java new file mode 100644 index 0000000..80c19a7 --- /dev/null +++ b/src/main/java/observer/ConcreteObserverA.java @@ -0,0 +1,7 @@ +package observer; + +public class ConcreteObserverA implements Observer { + public void observe(String event) { + System.out.println("Observer A :" + event); + } +} diff --git a/src/main/java/observer/ConcreteObserverB.java b/src/main/java/observer/ConcreteObserverB.java new file mode 100644 index 0000000..dcd99db --- /dev/null +++ b/src/main/java/observer/ConcreteObserverB.java @@ -0,0 +1,7 @@ +package observer; + +public class ConcreteObserverB implements Observer { + public void observe(String event) { + System.out.println("Observer B :" + event); + } +} diff --git a/src/main/java/observer/ConcreteSubject.java b/src/main/java/observer/ConcreteSubject.java new file mode 100644 index 0000000..9b8bb65 --- /dev/null +++ b/src/main/java/observer/ConcreteSubject.java @@ -0,0 +1,23 @@ +package observer; + +import java.util.Set; +import java.util.concurrent.CopyOnWriteArraySet; + +public class ConcreteSubject implements Subject { + private final Set> observers = new CopyOnWriteArraySet<>(); + + @Override + public void registerObserver(Observer observer) { + observers.add(observer); + } + + @Override + public void unregisterObserver(Observer observer) { + observers.remove(observer); + } + + @Override + public void notifyObservers(String event) { + observers.forEach(ob -> ob.observe(event)); + } +} diff --git a/src/main/java/observer/Observer.java b/src/main/java/observer/Observer.java new file mode 100644 index 0000000..261d398 --- /dev/null +++ b/src/main/java/observer/Observer.java @@ -0,0 +1,5 @@ +package observer; + +public interface Observer { + void observe(T event); +} diff --git a/src/main/java/observer/Subject.java b/src/main/java/observer/Subject.java new file mode 100644 index 0000000..7d38893 --- /dev/null +++ b/src/main/java/observer/Subject.java @@ -0,0 +1,7 @@ +package observer; + +public interface Subject { + void registerObserver(Observer observer); + void unregisterObserver(Observer observer); + void notifyObservers(T event); +} diff --git a/src/main/java/observer/definition.md b/src/main/java/observer/definition.md new file mode 100644 index 0000000..646b092 --- /dev/null +++ b/src/main/java/observer/definition.md @@ -0,0 +1,4 @@ +# Observer Pattern +관찰자라고 불리는 자손의 리스트르르 가지고 있는 주체(Subject)를 필요로 한다. 주체는 일반적으로 자신의 메서드 중 하나를 호출해 관찰자에게 상태 변경을 알린다. 이 패턴은 이벤트 처리 기반으로 시스템을 구현할 때 필수적이다. + +일반적인 관찰자 패턴은 서브젝트와 옵저버 2개의 인터페이스로 구성된다. 관찰자는 주체에 등록되고 서브젝트로부터 알림을 수신한다. 서브젝트 스스로 이벤트를 발생시키거나 다른 구성 요소에 의해 호출될 수 있다. \ No newline at end of file diff --git a/src/main/java/observer/finish/Client.java b/src/main/java/observer/finish/Client.java new file mode 100644 index 0000000..70c7092 --- /dev/null +++ b/src/main/java/observer/finish/Client.java @@ -0,0 +1,24 @@ +package observer.finish; + + +public class Client { + private MockTimeSource source; + private MockTimeSink sink; + private MockTimeSink2 sink2; + + public void setup() { + source = new MockTimeSource(); + sink = new MockTimeSink(); + sink2 = new MockTimeSink2(); + source.registerObserver(sink); + source.registerObserver(sink2); + + + } + + public void testTimeChange() { + source.setTime(1,2,3); + source.setTime(3, 4, 5); + source.setTime(7, 8, 9); + } +} diff --git a/src/main/java/observer/finish/Main.java b/src/main/java/observer/finish/Main.java new file mode 100644 index 0000000..2163737 --- /dev/null +++ b/src/main/java/observer/finish/Main.java @@ -0,0 +1,9 @@ +package observer.finish; + +public class Main { + public static void main(String[] args) { + Client client = new Client(); + client.setup(); + client.testTimeChange(); + } +} diff --git a/src/main/java/observer/finish/MockTimeSink.java b/src/main/java/observer/finish/MockTimeSink.java index b1cd26b..03d179b 100644 --- a/src/main/java/observer/finish/MockTimeSink.java +++ b/src/main/java/observer/finish/MockTimeSink.java @@ -4,11 +4,6 @@ public class MockTimeSink implements Observer { private int hours; private int minutes; private int seconds; - private TimeSource source; - - public MockTimeSink(TimeSource source) { - this.source = source; - } public int getHours() { return hours; @@ -22,9 +17,16 @@ public int getSeconds() { return seconds; } - public void update() { + public void update(TimeSource source) { this.hours = source.getHours(); this.minutes = source.getMinutes(); this.seconds = source.getSeconds(); + System.out.printf( + "Hours : %d, Minutes : %d, Seconds : %d\n", + this.hours, + this.minutes, + this.seconds); + +// System.out.println(this); } } diff --git a/src/main/java/observer/finish/MockTimeSink2.java b/src/main/java/observer/finish/MockTimeSink2.java new file mode 100644 index 0000000..0a5bdf0 --- /dev/null +++ b/src/main/java/observer/finish/MockTimeSink2.java @@ -0,0 +1,32 @@ +package observer.finish; + +public class MockTimeSink2 implements Observer { + private int hours; + private int minutes; + private int seconds; + + public int getHours() { + return hours; + } + + public int getMinutes() { + return minutes; + } + + public int getSeconds() { + return seconds; + } + + public void update(TimeSource source) { + this.hours = source.getHours(); + this.minutes = source.getMinutes(); + this.seconds = source.getSeconds(); + System.out.printf( + "** Hours : %d, Minutes : %d, Seconds : %d **\n", + this.hours, + this.minutes, + this.seconds); + +// System.out.println(this); + } +} diff --git a/src/main/java/observer/finish/MockTimeSource.java b/src/main/java/observer/finish/MockTimeSource.java index 944136a..1d6f66f 100644 --- a/src/main/java/observer/finish/MockTimeSource.java +++ b/src/main/java/observer/finish/MockTimeSource.java @@ -9,7 +9,7 @@ public void setTime(int hours, int minutes, int seconds) { this.hours = hours; this.minutes = minutes; this.seconds = seconds; - notifyObserver(); + notifyObserver(this); } @Override diff --git a/src/main/java/observer/finish/Observer.java b/src/main/java/observer/finish/Observer.java index 3e71b30..704f803 100644 --- a/src/main/java/observer/finish/Observer.java +++ b/src/main/java/observer/finish/Observer.java @@ -1,5 +1,5 @@ package observer.finish; public interface Observer { - public void update(); + void update(TimeSource timeSource); } diff --git a/src/main/java/observer/finish/Subject.java b/src/main/java/observer/finish/Subject.java index 270cac6..4e706b3 100644 --- a/src/main/java/observer/finish/Subject.java +++ b/src/main/java/observer/finish/Subject.java @@ -6,11 +6,11 @@ public class Subject { private Vector itsObservers = new Vector(); - protected void notifyObserver() { + protected void notifyObserver(TimeSource source) { Iterator i = itsObservers.iterator(); while (i.hasNext()) { Observer observer = (Observer) i.next(); - observer.update(); + observer.update(source); } } From 34abbeffd6307bf96f99b13773d8cfbb9cd16c3a Mon Sep 17 00:00:00 2001 From: "anny.k" Date: Wed, 21 Oct 2020 20:02:38 +0900 Subject: [PATCH 7/9] =?UTF-8?q?=EC=96=B4=EB=8C=91=ED=84=B0=20=ED=8C=A8?= =?UTF-8?q?=ED=84=B4=20=EB=AA=A8=EB=8E=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/abstractserver/example/Light.java | 15 +++++++++++ .../java/abstractserver/example/Switch.java | 10 ++++++++ .../abstractserver/example/Swtichable.java | 6 +++++ src/main/java/adapter/DedicatedModem.java | 11 ++++++++ .../java/adapter/DedicatedModemAdapter.java | 25 +++++++++++++++++++ src/main/java/adapter/Deduser.java | 10 ++++++++ src/main/java/adapter/HayesModem.java | 23 +++++++++++++++++ src/main/java/adapter/Modem.java | 8 ++++++ src/main/java/adapter/UsRoboticsModem.java | 23 +++++++++++++++++ src/test/java/DeduserTest.java | 11 ++++++++ 10 files changed, 142 insertions(+) create mode 100644 src/main/java/abstractserver/example/Light.java create mode 100644 src/main/java/abstractserver/example/Switch.java create mode 100644 src/main/java/abstractserver/example/Swtichable.java create mode 100644 src/main/java/adapter/DedicatedModem.java create mode 100644 src/main/java/adapter/DedicatedModemAdapter.java create mode 100644 src/main/java/adapter/Deduser.java create mode 100644 src/main/java/adapter/HayesModem.java create mode 100644 src/main/java/adapter/Modem.java create mode 100644 src/main/java/adapter/UsRoboticsModem.java create mode 100644 src/test/java/DeduserTest.java diff --git a/src/main/java/abstractserver/example/Light.java b/src/main/java/abstractserver/example/Light.java new file mode 100644 index 0000000..4ebb52c --- /dev/null +++ b/src/main/java/abstractserver/example/Light.java @@ -0,0 +1,15 @@ +package abstractserver.example; + +public class Light implements Swtichable{ + + @Override + public void on() { + System.out.println("Light On"); + + } + + @Override + public void off() { + System.out.println("Light Off"); + } +} diff --git a/src/main/java/abstractserver/example/Switch.java b/src/main/java/abstractserver/example/Switch.java new file mode 100644 index 0000000..810f4ed --- /dev/null +++ b/src/main/java/abstractserver/example/Switch.java @@ -0,0 +1,10 @@ +package abstractserver.example; + +public class Switch { + public static void main(String[] args) { + Swtichable swtichable = new Light(); + + swtichable.on(); + swtichable.off(); + } +} diff --git a/src/main/java/abstractserver/example/Swtichable.java b/src/main/java/abstractserver/example/Swtichable.java new file mode 100644 index 0000000..52b6faf --- /dev/null +++ b/src/main/java/abstractserver/example/Swtichable.java @@ -0,0 +1,6 @@ +package abstractserver.example; + +public interface Swtichable { + void on(); + void off(); +} diff --git a/src/main/java/adapter/DedicatedModem.java b/src/main/java/adapter/DedicatedModem.java new file mode 100644 index 0000000..fceebdd --- /dev/null +++ b/src/main/java/adapter/DedicatedModem.java @@ -0,0 +1,11 @@ +package adapter; + +public class DedicatedModem { + public void send() { + System.out.println("Dedicated Modem send"); + } + + public void receive() { + System.out.println("Dedicated Modem receive"); + } +} diff --git a/src/main/java/adapter/DedicatedModemAdapter.java b/src/main/java/adapter/DedicatedModemAdapter.java new file mode 100644 index 0000000..1bc9f5c --- /dev/null +++ b/src/main/java/adapter/DedicatedModemAdapter.java @@ -0,0 +1,25 @@ +package adapter; + +public class DedicatedModemAdapter implements Modem { + DedicatedModem dedicatedModem; + + @Override + public void dial(char[] a) { + + } + + @Override + public void hangup() { + + } + + @Override + public void send() { + dedicatedModem.send(); + } + + @Override + public void receive() { + dedicatedModem.receive(); + } +} diff --git a/src/main/java/adapter/Deduser.java b/src/main/java/adapter/Deduser.java new file mode 100644 index 0000000..db3479f --- /dev/null +++ b/src/main/java/adapter/Deduser.java @@ -0,0 +1,10 @@ +package adapter; + +public class Deduser { + private DedicatedModem modem = new DedicatedModem(); + + public void messageProcess() { + this.modem.send(); + this.modem.receive(); + } +} diff --git a/src/main/java/adapter/HayesModem.java b/src/main/java/adapter/HayesModem.java new file mode 100644 index 0000000..e5911a3 --- /dev/null +++ b/src/main/java/adapter/HayesModem.java @@ -0,0 +1,23 @@ +package adapter; + +public class HayesModem implements Modem { + @Override + public void dial(char[] a) { + System.out.println("hayes modem dial"); + } + + @Override + public void hangup() { + System.out.println("hayes modem hangup"); + } + + @Override + public void send() { + System.out.println("hayes modem send"); + } + + @Override + public void receive() { + System.out.println("hayes modem receive"); + } +} diff --git a/src/main/java/adapter/Modem.java b/src/main/java/adapter/Modem.java new file mode 100644 index 0000000..53d4d99 --- /dev/null +++ b/src/main/java/adapter/Modem.java @@ -0,0 +1,8 @@ +package adapter; + +public interface Modem { + void dial(char[] a); + void hangup(); + void send(); + void receive(); +} diff --git a/src/main/java/adapter/UsRoboticsModem.java b/src/main/java/adapter/UsRoboticsModem.java new file mode 100644 index 0000000..726be19 --- /dev/null +++ b/src/main/java/adapter/UsRoboticsModem.java @@ -0,0 +1,23 @@ +package adapter; + +public class UsRoboticsModem implements Modem { + @Override + public void dial(char[] a) { + System.out.println("US Robotics dial"); + } + + @Override + public void hangup() { + System.out.println("US Robotics hangup"); + } + + @Override + public void send() { + System.out.println("US Robotics send"); + } + + @Override + public void receive() { + System.out.println("US Robotics receive"); + } +} diff --git a/src/test/java/DeduserTest.java b/src/test/java/DeduserTest.java new file mode 100644 index 0000000..abb9f33 --- /dev/null +++ b/src/test/java/DeduserTest.java @@ -0,0 +1,11 @@ +import adapter.Deduser; +import org.junit.jupiter.api.Test; + +class DeduserTest { + @Test + public void messageProcess() { + new Deduser().messageProcess(); + } + + +} \ No newline at end of file From 7906313ac2313856ed99c077852df50637eed45d Mon Sep 17 00:00:00 2001 From: "anny.k" Date: Wed, 21 Oct 2020 21:55:30 +0900 Subject: [PATCH 8/9] bridge pattern modem --- .../java/adapter/DedicatedModemAdapter.java | 9 +++- src/main/java/adapter/ModemImpl.java | 11 +++++ src/main/java/adapter/ModemImplAdapter.java | 30 +++++++++++++ src/main/java/bridge/DedModemController.java | 28 ++++++++++++ src/main/java/bridge/DedicatedModem.java | 6 +++ src/main/java/bridge/DialModemController.java | 8 ++++ .../java/{adapter => bridge}/HayesModem.java | 4 +- src/main/java/{adapter => bridge}/Modem.java | 2 +- src/main/java/bridge/ModemClients.java | 15 +++++++ .../bridge/ModemConnectionController.java | 45 +++++++++++++++++++ src/main/java/bridge/ModemImplementation.java | 11 +++++ .../{adapter => bridge}/UsRoboticsModem.java | 6 ++- src/test/java/DeduserTest.java | 9 ++-- 13 files changed, 174 insertions(+), 10 deletions(-) create mode 100644 src/main/java/adapter/ModemImpl.java create mode 100644 src/main/java/adapter/ModemImplAdapter.java create mode 100644 src/main/java/bridge/DedModemController.java create mode 100644 src/main/java/bridge/DedicatedModem.java create mode 100644 src/main/java/bridge/DialModemController.java rename src/main/java/{adapter => bridge}/HayesModem.java (84%) rename src/main/java/{adapter => bridge}/Modem.java (86%) create mode 100644 src/main/java/bridge/ModemClients.java create mode 100644 src/main/java/bridge/ModemConnectionController.java create mode 100644 src/main/java/bridge/ModemImplementation.java rename src/main/java/{adapter => bridge}/UsRoboticsModem.java (79%) diff --git a/src/main/java/adapter/DedicatedModemAdapter.java b/src/main/java/adapter/DedicatedModemAdapter.java index 1bc9f5c..7a5f0ca 100644 --- a/src/main/java/adapter/DedicatedModemAdapter.java +++ b/src/main/java/adapter/DedicatedModemAdapter.java @@ -1,11 +1,16 @@ package adapter; +import bridge.Modem; + public class DedicatedModemAdapter implements Modem { - DedicatedModem dedicatedModem; + private DedicatedModem dedicatedModem; + + public DedicatedModemAdapter(DedicatedModem delegateModem) { + this.dedicatedModem = delegateModem; + } @Override public void dial(char[] a) { - } @Override diff --git a/src/main/java/adapter/ModemImpl.java b/src/main/java/adapter/ModemImpl.java new file mode 100644 index 0000000..ea8f83a --- /dev/null +++ b/src/main/java/adapter/ModemImpl.java @@ -0,0 +1,11 @@ +package adapter; + +public class ModemImpl { + public void dial(char[] a) { + System.out.println("Modem Impl dial"); + } + + public void hangup() { + System.out.println("Modem Impl hangup"); + } +} diff --git a/src/main/java/adapter/ModemImplAdapter.java b/src/main/java/adapter/ModemImplAdapter.java new file mode 100644 index 0000000..85cd418 --- /dev/null +++ b/src/main/java/adapter/ModemImplAdapter.java @@ -0,0 +1,30 @@ +package adapter; + +import bridge.Modem; + +public class ModemImplAdapter implements Modem { + private ModemImpl modemImpl; + + public ModemImplAdapter(ModemImpl modemImpl) { + this.modemImpl = modemImpl; + } + @Override + public void dial(char[] a) { + + } + + @Override + public void hangup() { + + } + + @Override + public void send() { + + } + + @Override + public void receive() { + + } +} diff --git a/src/main/java/bridge/DedModemController.java b/src/main/java/bridge/DedModemController.java new file mode 100644 index 0000000..d6eef3e --- /dev/null +++ b/src/main/java/bridge/DedModemController.java @@ -0,0 +1,28 @@ +package bridge; + +public class DedModemController extends ModemConnectionController { + public DedModemController(ModemImplementation modemImplementation) { + super(modemImplementation); + } + + @Override + protected void dialImpl(char[] a) { + System.out.println("DedModem DialImpl"); +// super.dialImpl(a); + } + + @Override + protected void hangImpl() { + System.out.println("DedModem hangImpl"); + } + + @Override + protected void sendImpl() { +// super.sendImpl(); + } + + @Override + protected void receiveImpl() { +// super.receiveImpl(); + } +} diff --git a/src/main/java/bridge/DedicatedModem.java b/src/main/java/bridge/DedicatedModem.java new file mode 100644 index 0000000..8b2338d --- /dev/null +++ b/src/main/java/bridge/DedicatedModem.java @@ -0,0 +1,6 @@ +package bridge; + +public interface DedicatedModem { + void send(); + void receive(); +} diff --git a/src/main/java/bridge/DialModemController.java b/src/main/java/bridge/DialModemController.java new file mode 100644 index 0000000..f11f6f8 --- /dev/null +++ b/src/main/java/bridge/DialModemController.java @@ -0,0 +1,8 @@ +package bridge; + +public class DialModemController extends ModemConnectionController { + public DialModemController(ModemImplementation modemImplementation) { + super(modemImplementation); + } + +} diff --git a/src/main/java/adapter/HayesModem.java b/src/main/java/bridge/HayesModem.java similarity index 84% rename from src/main/java/adapter/HayesModem.java rename to src/main/java/bridge/HayesModem.java index e5911a3..50a9bf0 100644 --- a/src/main/java/adapter/HayesModem.java +++ b/src/main/java/bridge/HayesModem.java @@ -1,6 +1,6 @@ -package adapter; +package bridge; -public class HayesModem implements Modem { +public class HayesModem implements ModemImplementation { @Override public void dial(char[] a) { System.out.println("hayes modem dial"); diff --git a/src/main/java/adapter/Modem.java b/src/main/java/bridge/Modem.java similarity index 86% rename from src/main/java/adapter/Modem.java rename to src/main/java/bridge/Modem.java index 53d4d99..a82c3f2 100644 --- a/src/main/java/adapter/Modem.java +++ b/src/main/java/bridge/Modem.java @@ -1,4 +1,4 @@ -package adapter; +package bridge; public interface Modem { void dial(char[] a); diff --git a/src/main/java/bridge/ModemClients.java b/src/main/java/bridge/ModemClients.java new file mode 100644 index 0000000..5a261e9 --- /dev/null +++ b/src/main/java/bridge/ModemClients.java @@ -0,0 +1,15 @@ +package bridge; + +public class ModemClients { + public static void main(String[] args) { + DedicatedModem dedicatedModem = new DedModemController(new UsRoboticsModem()); + + dedicatedModem.receive(); + dedicatedModem.send(); + + Modem modem = new DialModemController(new UsRoboticsModem()); +// modem.hangup(); +// modem.receive(); +// modem.send(); + } +} diff --git a/src/main/java/bridge/ModemConnectionController.java b/src/main/java/bridge/ModemConnectionController.java new file mode 100644 index 0000000..f0201f1 --- /dev/null +++ b/src/main/java/bridge/ModemConnectionController.java @@ -0,0 +1,45 @@ +package bridge; + +public abstract class ModemConnectionController implements Modem, DedicatedModem { + ModemImplementation modemImplementation; + + public ModemConnectionController(ModemImplementation modemImplementation) { + this.modemImplementation = modemImplementation; + } + + protected void dialImpl(char[] a) { + modemImplementation.dial(a); + } + + protected void hangImpl() { + modemImplementation.hangup(); + } + + protected void sendImpl() { + modemImplementation.send(); + } + + protected void receiveImpl() { + modemImplementation.receive();; + } + + @Override + public void dial(char[] a) { + this.dialImpl(a); + } + + @Override + public void hangup() { + this.hangImpl(); + } + + @Override + public void send() { + this.sendImpl(); + } + + @Override + public void receive() { + this.receiveImpl(); + } +} diff --git a/src/main/java/bridge/ModemImplementation.java b/src/main/java/bridge/ModemImplementation.java new file mode 100644 index 0000000..accf6cc --- /dev/null +++ b/src/main/java/bridge/ModemImplementation.java @@ -0,0 +1,11 @@ +package bridge; + +public interface ModemImplementation { + void dial(char[] a); + + void hangup(); + + void send(); + + void receive(); +} \ No newline at end of file diff --git a/src/main/java/adapter/UsRoboticsModem.java b/src/main/java/bridge/UsRoboticsModem.java similarity index 79% rename from src/main/java/adapter/UsRoboticsModem.java rename to src/main/java/bridge/UsRoboticsModem.java index 726be19..0d5154e 100644 --- a/src/main/java/adapter/UsRoboticsModem.java +++ b/src/main/java/bridge/UsRoboticsModem.java @@ -1,6 +1,8 @@ -package adapter; +package bridge; -public class UsRoboticsModem implements Modem { +import bridge.Modem; + +public class UsRoboticsModem implements ModemImplementation { @Override public void dial(char[] a) { System.out.println("US Robotics dial"); diff --git a/src/test/java/DeduserTest.java b/src/test/java/DeduserTest.java index abb9f33..f0cfd78 100644 --- a/src/test/java/DeduserTest.java +++ b/src/test/java/DeduserTest.java @@ -1,10 +1,13 @@ -import adapter.Deduser; +import adapter.DedicatedModem; +import adapter.DedicatedModemAdapter; import org.junit.jupiter.api.Test; class DeduserTest { @Test - public void messageProcess() { - new Deduser().messageProcess(); + public void test() { + new DedicatedModemAdapter(new DedicatedModem()).send(); + + } From 61409b4bc94be1c8cfffe12564773202d31d8ef6 Mon Sep 17 00:00:00 2001 From: "anny.k" Date: Wed, 21 Oct 2020 22:07:46 +0900 Subject: [PATCH 9/9] =?UTF-8?q?ModemClients=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/bridge/ModemClients.java | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/java/bridge/ModemClients.java b/src/main/java/bridge/ModemClients.java index 5a261e9..3efae8c 100644 --- a/src/main/java/bridge/ModemClients.java +++ b/src/main/java/bridge/ModemClients.java @@ -2,14 +2,10 @@ public class ModemClients { public static void main(String[] args) { - DedicatedModem dedicatedModem = new DedModemController(new UsRoboticsModem()); + Modem modem = new DedModemController(new UsRoboticsModem()); - dedicatedModem.receive(); - dedicatedModem.send(); + modem.receive(); + modem.send(); - Modem modem = new DialModemController(new UsRoboticsModem()); -// modem.hangup(); -// modem.receive(); -// modem.send(); } }