Π¨Π°Π±Π»ΠΎΠ½ ΠΠΈΠ·Π°ΠΉΠ½Π° (Π‘Π΅ΡΠΈΡ ΠΈΠ· 4 Π§Π°ΡΡΠ΅ΠΉ)
ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
- ΠΠ»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΠΌ ΠΈ ΠΎΡΠ½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ Π΄Π°Π½Π½ΡΠ΅
ΠΠ°ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅
Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΡΠΈΠΏΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π² ΡΡΠΎΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
ΠΠ»Π°ΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ)
Π‘ΡΡΡΠΊΡΡΡΠ°
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ. ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ² ΠΌΠ°ΡΠΈΠ½. ΠΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Windows ΠΈΠ»ΠΈ Linux, ΠΎΠ±Π»Π°ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ (Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ). ΠΡΠΎ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
1 Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ°Π· ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π°Π½ΡΠΈΠ²ΠΈΡΡΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ “ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ”, ΡΡΠΎΠ±Ρ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠ³ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ “Π½ΠΎΠ²ΡΠΉ”.
package com.gaurav.prototype; public class MachineImage implements Cloneable { StringBuilder image; public MachineImage(String os, String antivirusSW) { image = new StringBuilder(); image.append(os) .append(" + " + antivirusSW); } private MachineImage(String sw) { image = new StringBuilder(sw); } public void install(String sw) { image.append(sw); } public void printSw() { System.out.println(image); } @Override public MachineImage clone() throws CloneNotSupportedException { return new MachineImage(this.image.toString()); } }
2 ΠΠΎΠ΄ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΠ»ΠΈΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
package com.gaurav.client; import com.gaurav.prototype.MachineImage; public class PrototypeClient { public static void main(String [] args) throws CloneNotSupportedException { /* Create base Machine Images */ MachineImage linuxVM= new MachineImage("Linux", "Symantec"); MachineImage windowsVM = new MachineImage("Windows", "MaAfee"); /* Clone Linux VM and Install Web Server */ MachineImage webServer= linuxVM.clone(); webServer.install(" + Web Server S/W"); /* Create a copy of the Web Server and * install Application server on top of it */ MachineImage webAppServer = webServer.clone(); webAppServer.install(" + App Server S/W"); /* Clone Linux VM and Install DB Server */ MachineImage dbServer= linuxVM.clone(); dbServer.install(" + Database Server S/W"); /* Create a test machine from Windows Image */ MachineImage testMachine= windowsVM.clone(); System.out.print("Web Server Configuration: "); webServer.printSw(); System.out.print("App Server Configuration: "); webAppServer.printSw(); System.out.print("DB Server Configuration: "); dbServer.printSw(); System.out.print("Test Machine Configuration: "); testMachine.printSw(); } }
ΠΡΡ ΠΎΠ΄
[output] Web Server Configuration: Linux OS + Antivirus S/W + Web Server S/W App Server Configuration: Linux OS + Antivirus S/W + Web Server S/W + App Server S/W DB Server Configuration: Linux OS + Antivirus S/W + Database Server S/W Test Machine Configuration: Linux OS + Antivirus S/W
ΠΡΠ³ΠΎΠ΄Ρ
- ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ: ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ MemberwiseClone) Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π΅ΡΠ΅Π²Π»Π΅, ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π·Π°Π½ΠΎΠ²ΠΎ (Ρ Π½ΠΎΠ²ΡΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ).
- ΠΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΡΠ΅Π½Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ². ΠΠ΅ΡΠ²ΡΠΉ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ Π² Π»ΡΠ±ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ
- Π‘ Π³Π»ΡΠ±ΠΎΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΎΡΡΠΎΡΠΎΠΆΠ½ΠΎ.
ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΠ· Π Π΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΠΈΡΠ°
- ΠΠΈΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π΅ΡΠΎΠΊ
ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ
- ΠΠ±ΡΠ°Π·Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½ – ΠΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ°Π·Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ s/w.
- ΠΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ DVD-Π΄ΠΈΡΠΊΠ° – ΠΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ DVD-Π΄ΠΈΡΠΊΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠΏΠΈΠΉ.
ΠΡΠΈΠΌΠ΅ΡΡ Java SDK
java.lang. ΠΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°()
ΠΠ°Π΄Π΅ΡΡΡ, Π²Π°ΠΌ ΡΡΠΎ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡ. Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΡΠ»ΡΡΠ°ΡΡ Π²Π°ΡΠΈ ΠΌΡΡΠ»ΠΈ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ°Π±Π»ΠΎΠ½Π΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π°.
Π₯ΠΎΡΠΈΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΠ°Π²Π°ΠΉΡΠ΅ Π²ΡΠΏΡΠ΅ΠΌ ΠΊΠΎΡΠ΅
Π¨Π°Π±Π»ΠΎΠ½ ΠΠΈΠ·Π°ΠΉΠ½Π° (Π‘Π΅ΡΠΈΡ ΠΈΠ· 4 Π§Π°ΡΡΠ΅ΠΉ)
ΠΡΠΈΠ³ΠΈΠ½Π°Π»: “https://dev.to/gauravratnawat/decode-prototype-pattern-589”