|
||
0
0
À¯À²¸¢
java ¿À·£¸¸¿¡ º¸´Ï±î Àç¹Õ³×¿ä.
Manager Ŭ·¡½º Á¤ÀÇÇѰ͵µ ¿Ã·ÁÁÖ½Ã¸é ´õ È®½ÇÇÒÅÙµ¥
Cloanable ÀÇ clone ¸Þ¼Òµå´Â ³»ºÎ¿¡ ObjectŬ·¡½ºÀÇ cloneÀ¸·Î protected·Î Á¤ÀǵǾî ÀÖ¾î¿ä. À̸¦ publicÀ¸·Î ÀçÁ¤ÀÇÇÏ·Á°í º¸Åë override Çϴ°ű¸¿ä.
Manager Ŭ·¡½º°¡ Product¿Í »ó¼Ó°ü°è¶ó¸é ³»ºÎ¿¡¼ protectedÀÎ cloneÇÔ¼ö ½ÇÇàÀÌ µÉ²¨¶ó ¹®Á¦°¡ ¾øÀ»°Í°°¾Æ¿ä |
0
0
SpiritedAway
´äº¯ °¨»çÇÕ´Ï´Ù, Manager Ŭ·¡½º´Â
package framework;
import java.util.HashMap; import java.util.Map;
public class Manager { private Map<String,Product> showcase = new HashMap<>();
public void register(String name, Product prototype) { showcase.put(name, prototype); }
public Product create(String prototypeName) { Product p = showcase.get(prototypeName); return p.createCopy(); } }
|
0
0
SpiritedAway
´äº¯ °¨»çÇÕ´Ï´Ù, ±Ùµ¥
±³Àç(JAVA ¾ð¾î·Î ¹è¿ì´Â µðÀÚÀÎ ÆÐÅÏ ÀÔ¹®: ½±°Ô ¹è¿ì´Â GoFÀÇ 23°¡Áö µðÀÚÀÎ ÆÐÅÏ) p123~p124 CloneableÀÌ ¿ä±¸ÇÏ´Â ¸Þ¼Òµå´Â? 'Cloneable ÀÎÅÍÆäÀ̽º' ¶ó°í Çϸé, ±× ¾È¿¡ clone ¸Þ¼Òµå°¡ ¼±¾ðµÈ °ÍÀ¸·Î »ý°¢Çϱ⠽±Áö¸¸, Cloneable ÀÎÅÍÆäÀ̽º¿¡´Â ¸Þ¼Òµå°¡ Çϳªµµ ¼±¾ðµÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º´Â ´Ü¼øÈ÷ 'clone ¸Þ¼Òµå·Î º¹Á¦¸¦ Çã¿ëÇÑ´Ù'´Â ÀǵµÀûÀΠǥ½Ã·Î »ç¿ëµË´Ï´Ù. ÀÌ·± Ç¥½Ã¸¦ ÇÏ´Â ÀÎÅÍÆäÀ̽º¸¦ ¸¶Ä¿ ÀÎÅÍÆäÀ̽º(marker interface)¶ó°í ºÎ¸¨´Ï´Ù. Java Ç¥ÁØ ¶óÀ̺귯¸®¿¡¼ CloneableÀÌ ¸¶Ä¿ ÀÎÅÍÆäÀ̽ºÀÎ °ÍÀº ¹Ù²Ü ¼ö ¾øÁö¸¸, ¿ø·¡´Â Cloneable ¾È¿¡¼ cloneÀ» ¼±¾ðÇϵµ·Ï ±ÔÁ¤ÇØ¾ß ÇßÀ» °ÍÀÔ´Ï´Ù. ±×·¯¸é CloneNotSupportedException ¿¹¿Üµµ ÇÊ¿ä ¾ø¾îÁý´Ï´Ù.
ÀÌ ¸»ÀÌ ¹«½¼ ¸»ÀÎÁö¿ä?? clone ¸Þ¼Òµå »ç¿ëÀ» À§ÇØ Cloneable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß µÇ´Âµ¥(¸¶Ä¿ ÀÎÅÍÆäÀ̽º), Cloneable ¾È¿¡¼ cloneÀÌ ¼±¾ðµÇ¾î ÀÖÀ¸¸é, clone ¸Þ¼Òµå »ç¿ëÀ» À§ÇØ ¹Ýµå½Ã Cloneable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ°í clone ¸Þ¼µå¸¦ ÀçÁ¤ÀÇ ÇØ¾ß µÇ´Ï, Cloneable ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏÁö ¾Ê°í clone ¸Þ¼µå¸¦ »ç¿ëÇÒ¶§ ¹ß»ýÇÏ´Â CloneNotSupportedExceptionÀÌ ³ªÅ¸³¯ ÀÏÀÌ ¾ø´Ù, Á¦°¡ ÀÌÇØÇÑ°Ô ¸Â³ª¿ä?? |
0 0 À¯À²¸¢ |
0
0
À¯À²¸¢
¸ÞÀÎÄڵ忡¼ ProductÀÇ ÀνºÅϽºÀÎ p1À̳ª mbox º¯¼ö°¡ Á÷Á¢ cloneÀ» È£ÃâÇϸé CloneNotSupportedException ÀÌ ¿¡·¯°¡¹ß»ýÇÒ°Ì´Ï´Ù |
0
0
SpiritedAway
@À¯À²¸¢ ¿¹ ÄÄÆÄÀÏ ½ÇÇàÇغ¸´Ï µ¹¾Æ°¡³×¿ä. |
0
0
SpiritedAway
@À¯À²¸¢ Main ÇÔ¼ö ³»¿¡¼ clone Á÷Á¢ È£ÃâÇÏ´Â°Ç ¾ø°í Product ÀÎÅÍÆäÀ̽º¸¦ implementsÇÏ´Â MessageBox³ª UnderlinePen ¾È¿¡¼¸¸ Clone ¸Þ¼µå¸¦ È£ÃâÇÏ°í ÀÖ½À´Ï´Ù. https://www.youngjin.com/reader/pds/pds.asp ÀÌ »çÀÌÆ® >> ITµµ¼/±³Àç 7178 JAVA ¾ð¾î·Î ¹è¿ì´Â µðÀÚÀÎ ÆÐÅÏ ÀÔ¹® 3ÆÇ °Ë»öÇÏ½Ã°í ºÎ·ÏCD´Ù¿î·Îµå -> ¾ÐÃà Ǫ½Ã°í 6 Prototype >> Sample ¿©±â¿¡ Àüü ¼Ò½º ÄÚµå ÀÖ½À´Ï´Ù.
|
0
0
SpiritedAway
@À¯À²¸¢ Product p1 = manager.create("strong message"); p1.use("Hello, world."); p1.clone();
Main ÇÔ¼ö¿¡ p1.clone(); ÄÚµå Ãß°¡Çؼ ÄÄÆÄÀÏ Çغ¸´Ï Main.java:18: error: cannot find symbol p1.clone(); ^ symbol: method clone() location: variable p1 of type Product 1 error
½Éº¼À» ãÀ» ¼ö ¾ø´Ù´Â ¿¡·¯°¡ ¶å´Ï´Ù. clone ¸Þ¼µå°¡ protected Á¢±ÙÀÚ·Î µÇ¾î ÀÖ¾î¼ ±×·±µí ÇÕ´Ï´Ù.
|
0
0
À¯À²¸¢
@SpiritedAway ³Ü ±×·¯´Ï±î CloneableÀ» »ó¼Ó¹Þ¾Æ ±¸ÇöµÈ MessageBox Ŭ·¡½º ³»ÀÇ createCopy¿¡¼ cloneÀ» »ç¿ëÇßÀ¸´Ï Á¤»óµ¿ÀÛ Çϴ°̴ϴÙ. |
0
0
À¯À²¸¢
@SpiritedAway ³Ü ±×·¸±â¶§¹®¿¡ ´ëºÎºÐ cloneÇÔ¼ö¸¦ public À¸·Î ÀçÁ¤ÀÇÇؼ ±¸ÇöÇÏÁÒ |
0
0
SpiritedAway
@À¯À²¸¢ ´äº¯ °¨»çÇÕ´Ï´Ù. |
|
|
¡â ÀÌÀü±Û¡ä ´ÙÀ½±Û | ¸ñ·Ïº¸±â |
´Ù¿î¹Þ¾Æ¼ Å×½ºÆ® Çغ¸¶ó´Â ¿¹Á¦¸é ´ç¿¬È÷ ¹®Á¦°¡ µÇ°ÚÁö¸¸ Ã¥¿¡ Àû¾îµÐ ¿¹Á¦¶ó¸é Áö¸é ³¶ºñ°¡ ½ÉÇؼ »ý·« ÇßÀ»°Í °°¾Æ¿ä.